## ## applicants.py ## Login : ## Started on Fri Jul 16 11:46:55 2010 Uli Fouquet ## $Id$ ## ## Copyright (C) 2010 Uli Fouquet ## 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 ## import grok from zope.component.interfaces import IFactory from zope.interface import implementedBy from zope.schema.fieldproperty import FieldProperty from waeup.sirp.interfaces import IWAeUPSIRPPluggable from waeup.sirp.applicants.interfaces import ( IResultEntry, IApplicant, IApplicantPDEEditData ) from waeup.sirp.widgets.passportwidget import PassportImage class ResultEntry(grok.Context): grok.implements(IResultEntry) def __init__(self, subject=None, score=None): self.subject = subject self.score = score class Applicant(grok.Context): # class Applicant(grok.Model): grok.implements(IApplicant, IApplicantPDEEditData) grok.provides(IApplicant) fst_sit_results = FieldProperty(IApplicant['fst_sit_results']) def __init__(self): self.reg_no = None self.access_code = None self.serial = None self.course1 = None self.course2 = None self.course3 = None self.firstname = None self.middlenames = None self.lastname = None self.jamb_age = None self.date_of_birth = None self.jamb_state = None self.jamb_lga = None self.lga = None self.sex = None self.email = None self.phone = None self.passport = False self.aos = None self.subj1 = None self.subj2 = None self.subj3 = None self.hq_matric_no = None self.hq_type = None self.hq_grade = None self.hq_school = None self.hq_session = None self.hq_disc = None self.fst_sit_fname = None self.fst_sit_no = None self.fst_sit_date = None self.fst_sit_type = None #self.fst_sit_results = [] self.fst_sit_results = None #self.fst_sit_results = ResultEntry() self.scd_sit_fname = None self.scd_sit_no = None self.scd_sit_date = None self.scd_sit_type = None self.scd_sit_results = None self.eng_score = None self.subj1score = None self.subj2score = None self.subj3score = None self.application_date = None self.status = None self.screening_date = None self.screening_type = None self.screening_score = None self.screening_venue = None self.total_score = None self.course_admitted = None self.department = None self.faculty = None self.entry_session = None self.notice = None self.student_id = None self.import_record_no = None self.imported_by = None self.import_date = None self.import_from = None class ApplicantTraverser(grok.Traverser): """Get image of the context applicant. Each applicant can provide a passport photograph which will be returned by this traverser if: - we request the exact filename of the picture or - ask for a picture named 'passport.jpg'. If no picture was stored yet, we get a placeholder image when asking for `passport.jpg`. If none of the above applies, we return ``None``, most probably resulting a :exc:`NotFound` exception. """ grok.context(IApplicant) def traverse(self, name): passport_filename = getattr(self.context.passport, 'filename', None) if name == passport_filename: return self.context.passport if name == 'passport.jpg': if self.context.passport is not False: return self.context.passport return PassportImage(None) return class ApplicantFactory(grok.GlobalUtility): """A factory for faculty containers. """ grok.implements(IFactory) grok.name(u'waeup.Applicant') title = u"Create a new applicant.", description = u"This factory instantiates new applicant instances." def __call__(self, *args, **kw): return Applicant() def getInterfaces(self): return implementedBy(Applicant)