2
# SchoolTool - common information systems platform for school administration
3
# Copyright (c) 2005 Shuttleworth Foundation
5
# This program is free software; you can redistribute it and/or modify
6
# it under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 2 of the License, or
8
# (at your option) any later version.
10
# This program is distributed in the hope that it will be useful,
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
15
# You should have received a copy of the GNU General Public License
16
# along with this program; if not, write to the Free Software
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24
from zope.security.checker import canWrite
25
from zope.security.interfaces import Unauthorized
26
from zope.traversing.api import getName
27
from zope.traversing.browser.absoluteurl import absoluteURL
28
from zope.publisher.browser import BrowserView
30
from schooltool.app.browser import app
31
from schooltool.gradebook import GradebookMessage as _
32
from schooltool.gradebook import interfaces
33
from schooltool.gradebook.browser.activity import BaseEditView
34
from schooltool.person.interfaces import IPerson
37
class WorksheetGradebookView(BrowserView):
38
"""A view that redirects from the worksheet to its gradebook."""
40
def __init__(self, context, request):
41
super(WorksheetGradebookView, self).__init__(context, request)
42
url = absoluteURL(self.context, self.request) + '/gradebook'
43
self.request.response.redirect(url)
46
return "Redirecting..."
49
class WorksheetManageView(object):
50
"""A Worksheet view."""
52
__used_for__ = interfaces.IWorksheet
57
for activity in list(self.context.values()):
59
url = absoluteURL(activity, self.request)
60
if interfaces.ILinkedColumnActivity.providedBy(activity):
61
url += '/editLinkedColumn.html'
62
yield {'name': getName(activity),
63
'title': activity.title,
66
'deployed': self.context.deployed}
69
return interfaces.IReportWorksheet.providedBy(self.context)
72
return canWrite(self.context, 'title')
75
return range(1, len(self.context.values())+1)
78
self.person = IPerson(self.request.principal, None)
79
if self.person is None:
80
# XXX ignas: i had to do this to make the tests pass,
81
# someone who knows what this code should do if the user
82
# is unauthenticated should add the relevant code
83
raise Unauthorized("You don't have the permission to do this.")
85
if 'DELETE' in self.request:
86
for name in self.request.get('delete', []):
87
del self.context[name]
88
elif 'form-submitted' in self.request:
90
for activity in self.context.values():
92
name = getName(activity)
93
if 'pos.'+name not in self.request:
95
new_pos = int(self.request['pos.'+name])
96
if new_pos != old_pos:
97
self.context.changePosition(name, new_pos-1)
100
def noActivitiesMessage(self):
101
return _('This worksheet has no activities.')
104
class WorksheetAddView(app.BaseAddView):
105
"""A view for adding a worksheet."""
108
#person = IPerson(self.request.principal, None)
109
#self.context.context.resetCurrentWorksheet(person)
110
return absoluteURL(self.context.context, self.request)
113
class WorksheetEditView(BaseEditView):
114
"""A view for editing worksheet info."""
117
return absoluteURL(self.context.__parent__, self.request)
120
class WorksheetDeleteView(object):
121
"""A view for deleting a worksheet."""
124
import pdb; pdb.set_trace()
125
next_url = absoluteURL(self.context.__parent__, self.request)
126
if 'CANCEL' in self.request:
127
self.request.response.redirect(next_url)
128
elif 'DELETE' in self.request:
129
next_url += '?DELETE_WORKSHEET=' + self.context.__name__
130
self.request.response.redirect(next_url)