## $Id: interfaces.py 13368 2015-10-31 07:48:41Z henrik $ ## ## Copyright (C) 2012 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 ## from zope import schema from zc.sourcefactory.contextual import BasicContextualSourceFactory from zope.catalog.interfaces import ICatalog from zope.component import getUtility from waeup.kofa.interfaces import IKofaObject from waeup.kofa.schema import PhoneNumber, FormattedDate from kofacustom.nigeria.interfaces import LGASource from kofacustom.nigeria.students.interfaces import ( INigeriaStudentBase, INigeriaUGStudentClearance, INigeriaPGStudentClearance, INigeriaStudentPersonal, INigeriaStudentStudyLevel, INigeriaStudentStudyCourse, INigeriaCourseTicket, INigeriaStudentUpdateByRegNo, INigeriaStudentUpdateByMatricNo, ) from waeup.aaue.payments.interfaces import ICustomOnlinePayment from waeup.aaue.interfaces import MessageFactory as _ class ICustomStudentBase(INigeriaStudentBase): """Representation of student base data. """ class ICustomStudentPersonal(INigeriaStudentPersonal): """Student personal data. """ father_name = schema.TextLine( title = _(u'Father\'s Name'), required = False, readonly = False, ) father_address = schema.Text( title = _(u'Father\'s Permanent Address'), required = False, readonly = False, ) father_work = schema.TextLine( title = _(u'Father\'s Place of Work'), required = False, readonly = False, ) father_phone = PhoneNumber( title = _(u'Father\'s Phone'), required = False, readonly = False, ) mother_name = schema.TextLine( title = _(u'Mother\'s Name'), required = False, readonly = False, ) mother_address = schema.Text( title = _(u'Mother\'s Permanent Address'), required = False, readonly = False, ) mother_work = schema.TextLine( title = _(u'Mother\'s Place of Work'), required = False, readonly = False, ) mother_phone = PhoneNumber( title = _(u'Mother\'s Phone'), required = False, readonly = False, ) phone_personal = PhoneNumber( title = _(u'Student\'s Personal Phone'), description = u'', required = True, readonly = False, ) class ICustomStudentPersonalEdit(ICustomStudentPersonal): """Interface for editing personal data by students. Here we can repeat the fields from IStudentPersonal and set the `required` if necessary. """ perm_address = schema.Text( title = _(u'Permanent Address'), required = True, ) next_kin_name = schema.TextLine( title = _(u'Next of Kin Name'), required = True, readonly = False, ) next_kin_relation = schema.TextLine( title = _(u'Next of Kin Relationship'), required = True, readonly = False, ) next_kin_address = schema.Text( title = _(u'Next of Kin Address'), required = True, readonly = False, ) next_kin_phone = PhoneNumber( title = _(u'Next of Kin Phone'), description = u'', required = True, readonly = False, ) father_name = schema.TextLine( title = _(u'Father\'s Name'), required = True, readonly = False, ) father_address = schema.Text( title = _(u'Father\'s Permanent Address'), required = True, readonly = False, ) father_work = schema.TextLine( title = _(u'Father\'s Place of Work'), required = True, readonly = False, ) father_phone = PhoneNumber( title = _(u'Father\'s Phone'), required = True, readonly = False, ) mother_name = schema.TextLine( title = _(u'Mother\'s Name'), required = True, readonly = False, ) mother_address = schema.Text( title = _(u'Mother\'s Permanent Address'), required = True, readonly = False, ) mother_work = schema.TextLine( title = _(u'Mother\'s Place of Work'), required = True, readonly = False, ) mother_phone = PhoneNumber( title = _(u'Mother\'s Phone'), required = True, readonly = False, ) phone_personal = PhoneNumber( title = _(u'Student\'s Personal Phone'), description = u'', required = True, readonly = False, ) class ICustomUGStudentClearance(INigeriaUGStudentClearance): """Representation of ug student clearance data. """ #date_of_birth = FormattedDate( # title = _(u'Date of Birth'), # required = True, # show_year = True, # ) lga = schema.Choice( source = LGASource(), title = _(u'State / LGA'), required = True, ) ICustomUGStudentClearance['lga'].order = INigeriaUGStudentClearance[ 'lga'].order #ICustomUGStudentClearance['date_of_birth'].order = INigeriaUGStudentClearance[ # 'date_of_birth'].order class ICustomPGStudentClearance(INigeriaPGStudentClearance): """Representation of pg student clearance data. """ class ICustomStudent(ICustomStudentBase,ICustomUGStudentClearance, ICustomPGStudentClearance,ICustomStudentPersonal): """Representation of a student. """ class ICustomStudentStudyCourse(INigeriaStudentStudyCourse): """A container for student study levels. """ class ICustomStudentStudyLevel(INigeriaStudentStudyLevel): """A container for course tickets. """ total_credits_s1 = schema.Int( title = _(u'1st Semester Units'), required = False, readonly = True, ) total_credits_s2 = schema.Int( title = _(u'2nd Semester Units'), required = False, readonly = True, ) total_credits = schema.Int( title = _(u'Total Units'), required = False, readonly = True, ) class ICustomStudentOnlinePayment(ICustomOnlinePayment): """A student payment via payment gateways. This Interface does not inherit from IStudentOnlinePayment. Thus all fields from IStudentOnlinePayment have to be repeated here. """ p_current = schema.Bool( title = _(u'Current Session Payment'), default = True, required = False, ) p_level = schema.Int( title = _(u'Payment Level'), required = False, ) ICustomStudentOnlinePayment['p_level'].order = ICustomStudentOnlinePayment[ 'p_session'].order class ICustomCourseTicket(INigeriaCourseTicket): """A course ticket. """ class ICustomStudentUpdateByRegNo(INigeriaStudentUpdateByRegNo): """Representation of a student. Skip regular reg_number validation. """ class ICustomStudentUpdateByMatricNo(INigeriaStudentUpdateByMatricNo): """Representation of a student. Skip regular matric_number validation. """