## $Id: department.py 7334 2011-12-12 14:11:21Z henrik $ ## ## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## """University departments. """ import grok from zope.component import createObject from zope.component.interfaces import IFactory from zope.interface import implementedBy from waeup.sirp.university.interfaces import IDepartment, IDepartmentAdd from waeup.sirp.university.vocabularies import inst_types class Department(grok.Container): """A university department. """ grok.implements(IDepartment, IDepartmentAdd) @property # Make this method read_only and looking like an attr. def local_roles(cls): return ['waeup.local.DepartmentManager', 'waeup.local.ClearanceOfficer', 'waeup.local.CourseAdviser100', 'waeup.local.CourseAdviser200', 'waeup.local.CourseAdviser300', 'waeup.local.CourseAdviser400', 'waeup.local.CourseAdviser500', 'waeup.local.CourseAdviser600', ] # A simple counter for ids. next_id = 0L def __init__(self, title=u'Unnamed Department', title_prefix=u'department', code=u"NA", **kw): super(Department, self).__init__(**kw) self.title = title self.title_prefix = title_prefix self.code = code self.courses = createObject(u'waeup.CoursesContainer') self.courses.__parent__ = self self.courses.__name__ = 'courses' self.certificates = createObject(u'waeup.CertificatesContainer') self.certificates.__parent__ = self self.certificates.__name__ = 'certificates' def traverse(self, name): """Deliver appropriate containers, if someone wants to go to courses or departments. """ if name == 'courses': return self.courses elif name == 'certificates': return self.certificates return None def longtitle(self): return "%s %s (%s)" % ( inst_types.getTerm(self.title_prefix).title, self.title, self.code) class DepartmentFactory(grok.GlobalUtility): """A factory for department containers. """ grok.implements(IFactory) grok.name(u'waeup.Department') title = u"Create a new department.", description = u"This factory instantiates new department instances." def __call__(self, *args, **kw): return Department(*args, **kw) def getInterfaces(self): """Get interfaces of objects provided by this factory. """ return implementedBy(Department)