~ubuntu-branches/ubuntu/saucy/schooltool.gradebook/saucy

« back to all changes in this revision

Viewing changes to src/schooltool/gradebook/browser/worksheet.py

  • Committer: Package Import Robot
  • Author(s): Gediminas Paulauskas
  • Date: 2011-11-29 20:56:56 UTC
  • mfrom: (1.1.5)
  • Revision ID: package-import@ubuntu.com-20111129205656-cd1r6nlkzsds5h2r
Tags: 2.0.0-0ubuntu2
* Upload to Precise.
* debian/rules: Fix to not install *.po files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
$Id$
22
22
"""
23
23
 
 
24
from zope.container.interfaces import INameChooser
24
25
from zope.security.checker import canWrite
25
26
from zope.security.interfaces import Unauthorized
26
27
from zope.traversing.api import getName
28
29
from zope.publisher.browser import BrowserView
29
30
from zope.app.form.browser.editview import EditView
30
31
 
 
32
from z3c.form import form, field, button
 
33
 
31
34
from schooltool.app.browser import app
 
35
from schooltool.common.inlinept import InheritTemplate
32
36
from schooltool.gradebook import GradebookMessage as _
33
37
from schooltool.gradebook import interfaces
 
38
from schooltool.gradebook.activity import Worksheet
34
39
from schooltool.person.interfaces import IPerson
 
40
from schooltool.skin import flourish
35
41
 
36
42
 
37
43
class WorksheetGradebookView(BrowserView):
109
115
        return absoluteURL(self.context.context, self.request)
110
116
 
111
117
 
 
118
class FlourishWorksheetAddView(flourish.form.AddForm):
 
119
    """flourish view for adding a worksheet."""
 
120
 
 
121
    fields = field.Fields(interfaces.IWorksheet).select('title')
 
122
    template = InheritTemplate(flourish.page.Page.template)
 
123
    label = None
 
124
    legend = _('Worksheet Details')
 
125
 
 
126
    @button.buttonAndHandler(_('Submit'), name='add')
 
127
    def handleAdd(self, action):
 
128
        super(FlourishWorksheetAddView, self).handleAdd.func(self, action)
 
129
 
 
130
    @button.buttonAndHandler(_("Cancel"))
 
131
    def handle_cancel_action(self, action):
 
132
        person = IPerson(self.request.principal, None)
 
133
        if person is None:
 
134
            worksheet = self.context._getDefaultWorksheet()
 
135
        else:
 
136
            worksheet = self.context.getCurrentWorksheet(person)
 
137
        if worksheet is None:
 
138
            url = absoluteURL(self.context.__parent__, self.request)
 
139
        else:
 
140
            url = absoluteURL(worksheet, self.request) + '/gradebook'
 
141
        self.request.response.redirect(url)
 
142
 
 
143
    def create(self, data):
 
144
        self.worksheet = Worksheet(data['title'])
 
145
        return self.worksheet
 
146
 
 
147
    def add(self, worksheet):
 
148
        chooser = INameChooser(self.context)
 
149
        name = chooser.chooseName(worksheet.title, worksheet)
 
150
        self.context[name] = worksheet
 
151
        return worksheet
 
152
 
 
153
    def nextURL(self):
 
154
        return absoluteURL(self.worksheet, self.request)
 
155
 
 
156
    def updateActions(self):
 
157
        super(FlourishWorksheetAddView, self).updateActions()
 
158
        self.actions['add'].addClass('button-ok')
 
159
        self.actions['cancel'].addClass('button-cancel')
 
160
 
 
161
 
112
162
class BaseEditView(EditView):
113
163
    """A base class for edit views that need special redirect."""
114
164
 
127
177
 
128
178
    def nextURL(self):
129
179
        return absoluteURL(self.context.__parent__, self.request)
 
180
 
 
181
 
 
182
class FlourishWorksheetEditView(flourish.form.Form, form.EditForm):
 
183
 
 
184
    template = InheritTemplate(flourish.page.Page.template)
 
185
    label = None
 
186
    legend = _('Worksheet Information')
 
187
    fields = field.Fields(interfaces.IWorksheet).select('title')
 
188
 
 
189
    @property
 
190
    def title(self):
 
191
        return self.context.title
 
192
 
 
193
    def update(self):
 
194
        return form.EditForm.update(self)
 
195
 
 
196
    @button.buttonAndHandler(_('Submit'), name='apply')
 
197
    def handleApply(self, action):
 
198
        super(FlourishWorksheetEditView, self).handleApply.func(self, action)
 
199
        # XXX: hacky sucessful submit check
 
200
        if (self.status == self.successMessage or
 
201
            self.status == self.noChangesMessage):
 
202
            url = absoluteURL(self.context.__parent__, self.request)
 
203
            self.request.response.redirect(url)
 
204
 
 
205
    @button.buttonAndHandler(_("Cancel"))
 
206
    def handle_cancel_action(self, action):
 
207
        url = absoluteURL(self.context.__parent__, self.request)
 
208
        self.request.response.redirect(url)
 
209
 
 
210
    def updateActions(self):
 
211
        super(FlourishWorksheetEditView, self).updateActions()
 
212
        self.actions['apply'].addClass('button-ok')
 
213
        self.actions['cancel'].addClass('button-cancel')