~azzar1/unity/add-show-desktop-key

621 by mattgiuca
Added 2 new apps: home and subjects. Both fairly incomplete, just a basic
1
# IVLE
2
# Copyright (C) 2007-2008 The University of Melbourne
3
#
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.
8
#
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.
13
#
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
17
18
# App: subjects
19
# Author: Matt Giuca
20
# Date: 29/2/2008
21
22
# This is an IVLE application.
23
# A sample / testing application for IVLE.
24
627 by mattgiuca
subjects: Now presents a top-level subjects menu (same as tutorials).
25
import os
26
import urllib
27
import cgi
28
1099.1.34 by William Grant
Split up ivle.webapp.base.views into ivle.webapp.base.{rest,xhtml}, as it was
29
from ivle.webapp.base.xhtml import XHTMLView
1099.1.115 by William Grant
Add tabs to the new framework. Move the app icons into the apps themselves.
30
from ivle.webapp.base.plugins import ViewPlugin, MediaPlugin
1099.1.20 by William Grant
ivle.webapp.admin.subject: Port www/apps/subjects to new framework.
31
from ivle.webapp.errors import NotFound
32
from ivle.database import Subject
1079 by William Grant
Merge setup-refactor branch. This completely breaks existing installations;
33
from ivle import util
621 by mattgiuca
Added 2 new apps: home and subjects. Both fairly incomplete, just a basic
34
1099.1.20 by William Grant
ivle.webapp.admin.subject: Port www/apps/subjects to new framework.
35
36
class SubjectsView(XHTMLView):
37
    '''The view of the list of subjects.'''
1099.1.35 by William Grant
ivle.webapp.base.xhtml#XHTMLView: Rename app_template to template (the things
38
    template = 'subjects.html'
39
    appname = 'subjects' # XXX
1099.1.20 by William Grant
ivle.webapp.admin.subject: Port www/apps/subjects to new framework.
40
1099.1.110 by William Grant
Implement an authorization system in the new framework. This breaks the REST
41
    def authorize(self, req):
42
        return req.user is not None
43
1099.1.20 by William Grant
ivle.webapp.admin.subject: Port www/apps/subjects to new framework.
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]
49
50
        ctx['enrolled_subjects'] = []
51
        ctx['other_subjects'] = []
52
53
        for subject in enrolled_subjects:
1093 by chadnickbok
Adding the changes from my genshi branch into trunk.
54
            new_subj = {}
55
            new_subj['name'] = subject.name
56
            new_subj['url'] = subject.url
1099.1.20 by William Grant
ivle.webapp.admin.subject: Port www/apps/subjects to new framework.
57
            ctx['enrolled_subjects'].append(new_subj)
58
59
        if len(unenrolled_subjects) > 0:
60
            for subject in unenrolled_subjects:
61
                new_subj = {}
62
                new_subj['name'] = subject.name
63
                new_subj['url'] = subject.url
64
                ctx['other_subjects'].append(new_subj)
65
66
1099.1.115 by William Grant
Add tabs to the new framework. Move the app icons into the apps themselves.
67
class Plugin(ViewPlugin, MediaPlugin):
1099.1.20 by William Grant
ivle.webapp.admin.subject: Port www/apps/subjects to new framework.
68
    urls = [
69
        ('subjects/', SubjectsView),
70
    ]
1099.1.115 by William Grant
Add tabs to the new framework. Move the app icons into the apps themselves.
71
72
    tabs = [
73
        ('subjects', 'Subjects', 'Announcements and information about the '
74
         'subjects you are enrolled in.', 'subjects.png', 'subjects', 5)
75
    ]
76
77
    media = 'subject-media'