## $Id: vocabularies.py 7321 2011-12-10 06:15:17Z 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 ## """Vocabularies and sources for the accommodation section. """ from grok import getSite from zope.component import getUtility from zope.catalog.interfaces import ICatalog from zc.sourcefactory.contextual import BasicContextualSourceFactory from waeup.sirp.interfaces import SimpleSIRPVocabulary NOT_OCCUPIED = u'not occupied' class StudentSource(BasicContextualSourceFactory): """A students source delivers all students in accommodation session. """ def acco_students(self, context): catalog = getUtility(ICatalog, name='students_catalog') accommodation_session = getSite()['configuration'].accommodation_session students = catalog.searchResults(current_session=( accommodation_session,accommodation_session)) existing_students = [ context.__parent__[key].owner for key in context.__parent__.keys()] students = [student for student in students if not student.student_id in existing_students] students = sorted(list(students), key=lambda value: value.student_id) return dict([(student.student_id,student.fullname) for student in students]) def getValues(self, context): return self.acco_students(context).keys() def getToken(self, context, value): return value def getTitle(self, context, value): return "%s - %s" % (value, self.acco_students(context)[value]) bed_letters = SimpleSIRPVocabulary( ('Bed A','A'), ('Bed B','B'), ('Bed C','C'), ('Bed D','D'), ('Bed E','E'), ('Bed F','F'), ('Bed G','G'), ('Bed H','H'), ('Bed I','I'), ) blocks = SimpleSIRPVocabulary( ('Block A','A'), ('Block B','B'), ('Block C','C'), ('Block D','D'), ('Block E','E'), ('Block F','F'), ('Block G','G'), ('Block H','H'), ('Block I','I'), ('Block K','K'), ('Block L','L'), ('Block M','M'), ('Block N','N'), ('Block O','O'), ('Block P','P'), ) special_handling = SimpleSIRPVocabulary( ('Regular Hostel','regular'), ('Blocked Hostel','blocked'), ('Postgraduate Hostel','pg'), )