## $Id: interfaces.py 9502 2012-11-02 06:13:11Z 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 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 CourseSource(BasicContextualSourceFactory): """A course source delivers all courses inside the portal by looking up a catalog. """ def getValues(self, context): catalog = getUtility(ICatalog, name='courses_catalog') courses = sorted(list(catalog.searchResults( code=(None, None))),key=lambda value: value.code) payments = context.student.getPaymentTuples() if (context.student.current_session, 'schoolfee_2', 'paid') in payments: pass else: courseslist = list(courses) for course in courseslist: if course.semester == 2: courses.remove(course) return courses def getToken(self, context, value): return value.code def getTitle(self, context, value): return "%s - %s (%d)" % ( value.code, value.title[:64], value.semester) class ICustomStudentBase(INigeriaStudentBase): """Representation of student base data. """ class ICustomStudentPersonal(INigeriaStudentPersonal): """Student personal data. """ class ICustomUGStudentClearance(INigeriaUGStudentClearance): """Representation of ug student clearance data. """ 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. """ 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, readonly = True, ) ICustomStudentOnlinePayment['p_level'].order = ICustomStudentOnlinePayment[ 'p_session'].order class ICustomCourseTicket(INigeriaCourseTicket): """A course ticket. """ class ICustomCourseTicketAdd(IKofaObject): """An interface for adding course tickets. """ course = schema.Choice( title = _(u'Course'), source = CourseSource(), readonly = False, ) class ICustomStudentUpdateByRegNo(INigeriaStudentUpdateByRegNo): """Representation of a student. Skip regular reg_number validation. """ class ICustomStudentUpdateByMatricNo(INigeriaStudentUpdateByMatricNo): """Representation of a student. Skip regular matric_number validation. """