2
# Copyright (C) 2007-2008 The University of Melbourne
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 2 of the License, or
7
# (at your option) any later version.
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
# GNU General Public License for more details.
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22
# This is an IVLE application.
23
# A sample / testing application for IVLE.
29
from ivle.webapp.base.xhtml import XHTMLView
30
from ivle.webapp.base.plugins import ViewPlugin, MediaPlugin
31
from ivle.webapp.errors import NotFound
32
from ivle.database import Subject
36
class SubjectsView(XHTMLView):
37
'''The view of the list of subjects.'''
38
template = 'subjects.html'
39
appname = 'subjects' # XXX
41
def authorize(self, req):
42
return req.user is not None
44
def populate(self, req, ctx):
45
enrolled_subjects = req.user.subjects
46
unenrolled_subjects = [subject for subject in
47
req.store.find(Subject)
48
if subject not in enrolled_subjects]
50
ctx['enrolled_subjects'] = []
51
ctx['other_subjects'] = []
53
req.content_type = "text/html"
54
req.write_html_head_foot = True
56
for subject in enrolled_subjects:
58
new_subj['name'] = subject.name
59
new_subj['url'] = subject.url
60
ctx['enrolled_subjects'].append(new_subj)
62
if len(unenrolled_subjects) > 0:
63
for subject in unenrolled_subjects:
65
new_subj['name'] = subject.name
66
new_subj['url'] = subject.url
67
ctx['other_subjects'].append(new_subj)
70
class Plugin(ViewPlugin, MediaPlugin):
72
('subjects/', SubjectsView),
76
('subjects', 'Subjects', 'Announcements and information about the '
77
'subjects you are enrolled in.', 'subjects.png', 'subjects', 5)
80
media = 'subject-media'