23
23
from zope.browserpage.viewpagetemplatefile import ViewPageTemplateFile
24
24
from zope.container.interfaces import INameChooser
25
from zope.location.location import LocationProxy
25
26
from zope.traversing.browser.absoluteurl import absoluteURL
26
27
from zope.security import proxy
28
29
from z3c.form import form, field, button
31
from schooltool.course.interfaces import ISection
30
32
from schooltool.common.inlinept import InheritTemplate
33
from schooltool.common.inlinept import InlineViewPageTemplate
31
34
from schooltool.gradebook.browser.gradebook import FlourishGradebookOverview
32
35
from schooltool.gradebook.browser.gradebook import FlourishGradebookStartup
33
36
from schooltool.gradebook.browser.gradebook import GradebookStartupNavLink
42
45
from schooltool.cando.interfaces import IProject
43
46
from schooltool.cando.interfaces import IProjects
47
from schooltool.cando.interfaces import ISectionSkills
48
from schooltool.cando.interfaces import IProjectsGradebook
49
from schooltool.cando.interfaces import ISkillsGradebook
44
50
from schooltool.cando.interfaces import ISkill
45
51
from schooltool.cando.gradebook import ensureAtLeastOneProject
46
52
from schooltool.cando.gradebook import getCurrentSectionTaught
47
53
from schooltool.cando.gradebook import getCurrentSectionAttended
48
54
from schooltool.cando.project import Project
49
from schooltool.cando.skill import Skill
50
55
from schooltool.cando.browser.skill import SkillAddView
51
56
from schooltool.cando import CanDoMessage as _
105
110
return "Redirecting..."
113
class SectionSkillsCanDoRedirectView(flourish.page.Page):
115
teacher_worksheet_view_name = 'gradebook'
116
student_worksheet_view_name = 'mygrades'
118
# XXX: merge this with SectionGradebookRedirectView
120
person = IPerson(self.request.principal)
121
worksheets = ISectionSkills(self.context)
122
# XXX: get Location proxy here
123
current_worksheet = worksheets.getCurrentWorksheet(person)
124
url = absoluteURL(worksheets, self.request)
125
if current_worksheet is not None:
126
container = ISectionSkills(self.context)
127
current_worksheet = LocationProxy(
130
name=current_worksheet.__name__)
131
url = absoluteURL(current_worksheet, self.request)
132
if person in self.context.members:
133
url += '/%s' % self.student_worksheet_view_name
135
url += '/%s' % self.teacher_worksheet_view_name
136
self.request.response.redirect(url)
137
return "Redirecting..."
108
140
class ProjectsGradebookOverview(FlourishGradebookOverview):
110
142
labels_row_header = _('Skill')
141
173
return shortTitle, longTitle, bestScore
177
class SkillsGradebookOverview(FlourishGradebookOverview):
179
labels_row_header = _('Skill')
180
teacher_gradebook_view_name = 'gradebook-skills'
181
student_gradebook_view_name = 'mygrades-skills'
186
return _('No Visible Skill Sets')
188
return _('Enter Skills')
190
def getActivityInfo(self, activity):
191
result = super(SkillsGradebookOverview, self).getActivityInfo(
193
if not activity.required:
194
cssClass = ' '.join(filter(None, [result['cssClass'], 'optional']))
195
result['cssClass'] = cssClass
198
def processColumnPreferences(self):
199
self.average_hide = True
200
self.total_hide = True
201
self.tardies_hide = True
202
self.absences_hide = True
203
self.due_date_hide = True
204
self.average_scoresystem = None
206
def getActivityAttrs(self, activity):
207
shortTitle, longTitle, bestScore = super(
208
SkillsGradebookOverview, self).getActivityAttrs(activity)
209
longTitle = activity.label + ': ' + longTitle
210
return shortTitle, longTitle, bestScore
144
213
class ProjectBreadcrumbs(flourish.breadcrumbs.Breadcrumbs):
155
224
class CanDoSettingsLinks(flourish.page.RefineLinksViewlet):
229
class CanDoModes(flourish.page.RefineLinksViewlet):
234
class CanDoModesViewlet(flourish.viewlet.Viewlet):
236
list_class = 'filter'
238
template = InlineViewPageTemplate('''
239
<ul tal:attributes="class view/list_class"
240
tal:condition="view/items">
241
<li tal:repeat="item view/items">
243
onfocus="ST.redirect($(this).context.value)"
244
tal:attributes="value item/url;
245
checked item/selected;" />
246
<tal:block replace="item/label" />
252
section = ISection(proxy.removeSecurityProxy(self.context))
253
section_url = absoluteURL(section, self.request)
256
'label': _('Skills'),
257
'url': section_url + '/gradebook-skills',
258
'selected': ISkillsGradebook.providedBy(self.context),
261
'label': _('Projects'),
262
'url': section_url + '/gradebook-projects',
263
'selected': IProjectsGradebook.providedBy(self.context),
267
def render(self, *args, **kw):
268
return self.template(*args, **kw)
159
271
class SkillAddLink(flourish.page.LinkViewlet):