## $Id: browser.py 9990 2013-02-24 17:45:04Z 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 ## import grok from zope.i18n import translate from zope.component import getUtility from waeup.kofa.widgets.datewidget import FriendlyDatetimeDisplayWidget from waeup.kofa.interfaces import IKofaUtils from waeup.kofa.students.interfaces import IStudentsUtils from waeup.kofa.students.browser import ( StudentBasePDFFormPage, CourseTicketAddFormPage, StudyLevelDisplayFormPage, ExportPDFCourseRegistrationSlipPage) from kofacustom.nigeria.students.browser import ( NigeriaOnlinePaymentDisplayFormPage, NigeriaOnlinePaymentAddFormPage, NigeriaExportPDFPaymentSlipPage) from waeup.aaue.students.interfaces import ( ICustomStudentOnlinePayment, ICustomStudentStudyLevel) from waeup.aaue.interfaces import MessageFactory as _ class CustomOnlinePaymentDisplayFormPage(NigeriaOnlinePaymentDisplayFormPage): """ Page to view an online payment ticket """ grok.context(ICustomStudentOnlinePayment) form_fields = grok.AutoFields(ICustomStudentOnlinePayment).omit( 'provider_amt', 'gateway_amt', 'thirdparty_amt', 'p_item') form_fields[ 'creation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le') form_fields[ 'payment_date'].custom_widget = FriendlyDatetimeDisplayWidget('le') class CustomOnlinePaymentAddFormPage(NigeriaOnlinePaymentAddFormPage): """ Page to add an online payment ticket """ form_fields = grok.AutoFields(ICustomStudentOnlinePayment).select( 'p_category') class CustomExportPDFPaymentSlipPage(NigeriaExportPDFPaymentSlipPage): """Deliver a PDF slip of the context. """ grok.context(ICustomStudentOnlinePayment) form_fields = grok.AutoFields(ICustomStudentOnlinePayment).omit( 'provider_amt', 'gateway_amt', 'thirdparty_amt', 'p_item') form_fields['creation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le') form_fields['payment_date'].custom_widget = FriendlyDatetimeDisplayWidget('le') class CustomStudyLevelDisplayFormPage(StudyLevelDisplayFormPage): """ Page to display student study levels """ grok.context(ICustomStudentStudyLevel) form_fields = grok.AutoFields(ICustomStudentStudyLevel).omit('total_credits') form_fields[ 'validation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le') class CustomExportPDFCourseRegistrationSlipPage( ExportPDFCourseRegistrationSlipPage): """Deliver a PDF slip of the context. """ grok.context(ICustomStudentStudyLevel) form_fields = grok.AutoFields(ICustomStudentStudyLevel).omit( 'total_credits', 'level_session', 'level_verdict', 'validated_by', 'validation_date', 'gpa') @property def label(self): portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE lang = self.request.cookies.get('kofa.language', portal_language) level_title = translate(self.context.level_title, 'waeup.kofa', target_language=lang) line0 = '' if self.context.student.current_mode.endswith('_pt'): line0 = 'DIRECTORATE OF PART-TIME DEGREE PROGRAMMES\n' line1 = translate(_('Course Registration Slip'), 'waeup.kofa', target_language=portal_language) \ + ' %s' % level_title line2 = translate(_('Session'), 'waeup.kofa', target_language=portal_language) \ + ' %s' % self.context.getSessionString return '%s%s\n%s' % (line0, line1, line2) @property def title(self): portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE return translate(_('Units Registered'), 'waeup.kofa', target_language=portal_language) def _signatures(self): return ( [('I have selected the course on the advise of my Head of ' 'Department.
', _('Student\'s Signature'), '
')], [('This student has satisfied the department\'s requirements. ' 'I recommend to approve the course registration.
', _('Head of Department\'s Signature'), '
')], [('' , _('Principal Assistant Registrar\'s Signature'), '
')], [('', _('Director\'s Signature'))] ) def render(self): portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE Sem = translate('Sem.', 'waeup.kofa', target_language=portal_language) Code = translate('Code', 'waeup.kofa', target_language=portal_language) Title = translate('Title', 'waeup.kofa', target_language=portal_language) Dept = translate('Dept.', 'waeup.kofa', target_language=portal_language) Cred = translate('Cred.', 'waeup.kofa', target_language=portal_language) Score = translate('Score', 'waeup.kofa', target_language=portal_language) Grade = translate('Grade', 'waeup.kofa', target_language=portal_language) Signature = translate(_('Course Lecturer\'s Signature'), 'waeup.aaue', target_language=portal_language) studentview = StudentBasePDFFormPage(self.context.student, self.request, self.omit_fields) students_utils = getUtility(IStudentsUtils) tabledata_1 = sorted( [value for value in self.context.values() if value.semester == 1], key=lambda value: str(value.semester) + value.code) tabledata_2 = sorted( [value for value in self.context.values() if value.semester == 2], key=lambda value: str(value.semester) + value.code) tableheader = [(Code,'code', 2.0), (Title,'title', 5), (Dept,'dcode', 1.5), #(Faculty,'fcode', 1.5), (Cred, 'credits', 1.5), (Score, 'score', 1.4), (Grade, 'grade', 1.4), (Signature, 'dummy', 3), ] if len(self.label.split('\n')) == 3: topMargin = 1.9 elif len(self.label.split('\n')) == 2: topMargin = 1.7 else: topMargin = 1.5 return students_utils.renderPDF( self, 'course_registration_slip.pdf', self.context.student, studentview, tableheader_1=tableheader, tabledata_1=tabledata_1, tableheader_2=tableheader, tabledata_2=tabledata_2, signatures=self._signatures(), topMargin=topMargin )