source: main/waeup.sirp/trunk/src/waeup/sirp/university/facultycontainer.py @ 7193

Last change on this file since 7193 was 7137, checked in by Henrik Bettermann, 13 years ago

Set value Id for property svn:keywords in all Python files.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 1.6 KB
Line 
1import grok
2from zope.component.interfaces import IFactory
3from zope.interface import implementedBy
4from waeup.sirp.interfaces import IWAeUPSIRPPluggable
5from waeup.sirp.university.interfaces import IFacultyContainer, IFaculty
6
7class FacultyContainer(grok.Container):
8    """See interfaces for description.
9    """
10    grok.implements(IFacultyContainer)
11    grok.require('waeup.manageUniversity')
12
13    def addFaculty(self, faculty):
14        if not IFaculty.providedBy(faculty):
15            raise TypeError('FacultyContainers contain only IFaculty instances')
16        self[faculty.code] = faculty
17        return
18
19class FacultyContainerFactory(grok.GlobalUtility):
20    """A factory for faculty containers.
21    """
22    grok.implements(IFactory)
23    grok.name(u'waeup.FacultyContainer')
24    title = u"Create a new faculty container.",
25    description = u"This factory instantiates new faculty containers."
26
27    def __call__(self, *args, **kw):
28        return FacultyContainer(*args, **kw)
29
30    def getInterfaces(self):
31        return implementedBy(FacultyContainer)
32
33class AcademicsPlugin(grok.GlobalUtility):
34    """A plugin that creates a faculty container inside a university.
35    """
36    grok.implements(IWAeUPSIRPPluggable)
37    grok.name('faculties')
38
39    def setup(self, site, name, logger):
40        if 'faculties' in site.keys():
41            logger.warn('Could not create faculty container in WAeUP SIRP.')
42            return
43        site['faculties'] = FacultyContainer()
44        logger.info('Created faculty container for University')
45        return
46
47    def update(self, site, name, logger):
48        if not 'faculties' in site.keys():
49            self.setup(site, name, logger)
50
Note: See TracBrowser for help on using the repository browser.