28
29
from zope.publisher.browser import BrowserView
29
30
from zope.app.form.browser.editview import EditView
32
from z3c.form import form, field, button
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
37
43
class WorksheetGradebookView(BrowserView):
109
115
return absoluteURL(self.context.context, self.request)
118
class FlourishWorksheetAddView(flourish.form.AddForm):
119
"""flourish view for adding a worksheet."""
121
fields = field.Fields(interfaces.IWorksheet).select('title')
122
template = InheritTemplate(flourish.page.Page.template)
124
legend = _('Worksheet Details')
126
@button.buttonAndHandler(_('Submit'), name='add')
127
def handleAdd(self, action):
128
super(FlourishWorksheetAddView, self).handleAdd.func(self, action)
130
@button.buttonAndHandler(_("Cancel"))
131
def handle_cancel_action(self, action):
132
person = IPerson(self.request.principal, None)
134
worksheet = self.context._getDefaultWorksheet()
136
worksheet = self.context.getCurrentWorksheet(person)
137
if worksheet is None:
138
url = absoluteURL(self.context.__parent__, self.request)
140
url = absoluteURL(worksheet, self.request) + '/gradebook'
141
self.request.response.redirect(url)
143
def create(self, data):
144
self.worksheet = Worksheet(data['title'])
145
return self.worksheet
147
def add(self, worksheet):
148
chooser = INameChooser(self.context)
149
name = chooser.chooseName(worksheet.title, worksheet)
150
self.context[name] = worksheet
154
return absoluteURL(self.worksheet, self.request)
156
def updateActions(self):
157
super(FlourishWorksheetAddView, self).updateActions()
158
self.actions['add'].addClass('button-ok')
159
self.actions['cancel'].addClass('button-cancel')
112
162
class BaseEditView(EditView):
113
163
"""A base class for edit views that need special redirect."""
128
178
def nextURL(self):
129
179
return absoluteURL(self.context.__parent__, self.request)
182
class FlourishWorksheetEditView(flourish.form.Form, form.EditForm):
184
template = InheritTemplate(flourish.page.Page.template)
186
legend = _('Worksheet Information')
187
fields = field.Fields(interfaces.IWorksheet).select('title')
191
return self.context.title
194
return form.EditForm.update(self)
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)
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)
210
def updateActions(self):
211
super(FlourishWorksheetEditView, self).updateActions()
212
self.actions['apply'].addClass('button-ok')
213
self.actions['cancel'].addClass('button-cancel')