source: waeup/branches/ulif-rewrite/src/waeup/app.py @ 3930

Last change on this file since 3930 was 3930, checked in by uli, 16 years ago

Make faculties an attribute instead of a container entry.

  • Property svn:eol-style set to native
File size: 2.8 KB
Line 
1import grok
2import re
3from zope.component import getUtility, getMultiAdapter
4from zope.interface import Interface
5
6from waeup.interfaces import (IUniversity, IStudentContainer, IHostelContainer,
7                              IFacultyContainer)
8from waeup.viewlets import MainArea, LeftSidebar, Index, Manage, FormWrapMixin
9
10class University(grok.Application, grok.Container):
11    """A university.
12    """
13    grok.implements(IUniversity)
14
15    def __init__(self, name=u'Sample University', **kw):
16        super(University, self).__init__(**kw)
17        self.name = name
18        self.setup()
19
20    def setup(self):
21        self["students"] = getUtility(IStudentContainer)
22        self["hostels"] = getUtility(IHostelContainer)
23        self.faculties = getUtility(IFacultyContainer)
24
25    def traverse(self, name):
26        # If someone requests a subobject 'faculties', we return our
27        # `faculties` attribute.
28        if name == 'faculties':
29            return self.faculties
30        return None
31       
32       
33class ManageForm(grok.EditForm):
34    """Manage the basic properties of a `University` instance.
35    """
36
37    form_fields = grok.AutoFields(IUniversity)
38
39    @grok.action('Save')
40    def save(self, **data):
41        self.applyData(self.context, **data)
42        return
43   
44    @grok.action('Save and return')
45    def saveAndReturn(self, **data):
46        self.applyData(self.context, **data)
47        self.redirect(self.url(self.context))
48        return
49
50    @grok.action('Cancel')
51    def cancel(self, **data):
52        self.redirect(self.url(self.context))
53        return
54
55class ManageUniversity(FormWrapMixin, grok.Viewlet):
56    """A viewlet that renders the `ManageForm`.
57    """
58    grok.viewletmanager(MainArea)
59    grok.context(IUniversity)
60    grok.view(Manage)
61    grok.require('waeup.manageUniversity')
62   
63    formview_name = 'manageform' # The name of the formview we want to
64                                 # be rendered in this viewlet.
65
66class Content(grok.Viewlet):
67    grok.viewletmanager(MainArea)
68    grok.context(IUniversity)
69    grok.view(Index)
70
71class ManageLink(grok.Viewlet):
72    grok.viewletmanager(LeftSidebar)
73    grok.context(IUniversity)
74    grok.view(Index)
75    grok.order(5)
76    # This is so cool! This link is only displayed, when the user is
77    # allowed to use it!
78    grok.require('waeup.manageUniversity')
79   
80    def render(self):
81        return u'<div class="portlet"><a href="manage">Settings</a></div>'
82
83class ManageFacultiesLink(grok.Viewlet):
84    grok.viewletmanager(LeftSidebar)
85    grok.context(IUniversity)
86    grok.view(Index)
87    grok.order(6)
88    # This is so cool! This link is only displayed, when the user is
89    # allowed to use it!
90    grok.require('waeup.manageUniversity')
91   
92    def render(self):
93        return u'<div class="portlet"><a href="faculties">Manage faculties</a></div>'
94   
95   
Note: See TracBrowser for help on using the repository browser.