## $Id: utils.py 16226 2020-09-07 07:30:28Z 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 ## """General helper functions and utilities for the application section. """ import grok from time import time from kofacustom.nigeria.applicants.utils import NigeriaApplicantsUtils from waeup.kofa.applicants.workflow import (INITIALIZED, STARTED, PAID, ADMITTED, NOT_ADMITTED, SUBMITTED, CREATED) from waeup.uniben.applicants.interfaces import REGISTRATION_CATS, DESTINATION_COST from waeup.uniben.interfaces import MessageFactory as _ class CustomApplicantsUtils(NigeriaApplicantsUtils): """A collection of parameters and methods subject to customization. """ ADDITIONAL_FILES = ( ('Eligibility Form','eligibility.pdf'), ('Statement of Result','res_stat.pdf'), ) APP_TYPES_DICT = { 'pude': ['Post-UDE Screening', 'PUDE'], 'sandwich': ['Part-Time Degree in Education', 'SAND'], 'pt': ['Part-Time Degree Programmes', 'PTP'], 'ptext': ['Part-Time Degree Programmes (extended application)', 'PTP'], 'putme': ['Post-UTME Screening Exercise', 'PUTME'], 'app': ['General Studies', 'APP'], 'cest': ['Common Entry Screening Test', 'CEST'], 'ct': ['Certificate Programmes', 'CTP'], 'dp': ['Diploma Programmes', 'DPP'], 'dpft': ['Diploma Full-Time Programmes', 'DPP'], 'pg': ['Postgraduate Programmes (main advert)', 'PG'], 'pga': ['Postgraduate Programmes (1st supplementary advert)', 'PG'], 'pgb': ['Postgraduate Programmes (2nd supplementary advert)', 'PG'], 'pgc': ['Postgraduate Programmes (3rd supplementary advert)', 'PG'], 'pgd': ['Postgraduate Programmes (4th supplementary advert)', 'PG'], 'pgn': ['NILS Postgraduate Programmes', 'PG'], 'pre': ['JUPEB Pre-Degree (Foundation) Studies', 'PRE'], 'cbt': ['UNIBEN CBT Practice Test', 'CBT'], 'ab': ['Asaba Programmes', 'ASA'], 'ak': ['Akoka Programmes', 'AKO'], 'akj': ['Akoka JUPEB', 'AKO'], 'ictwk': ['ICT Week Registration', 'ICT'], 'ase': ['Uniben Admission Screening Exercise', 'ASE'], 'asea': ['Uniben Admission Screening Exercise ' '(1st supplementary advert)', 'ASE'], 'aseb': ['Uniben Admission Screening Exercise ' '(2nd supplementary advert)', 'ASE'], 'spft': ['Special Full-Time Programmes', 'SP'], 'tscf': ['Transcript (without student record)', 'TRF'], 'tscs': ['Transcript (with student record)', 'TRS'], } SEPARATORS_DICT = { 'form.applicant_id': _(u'Base Data'), 'form.course1': _(u'Programmes/Courses Desired'), 'form.hq_type': _(u'Higher Education Record'), 'form.presently': _(u'Course or Programme Presently Attending'), 'form.nysc_year': _(u'NYSC Information'), 'form.employer': _(u'Employment History'), 'form.jamb_subjects': _(u'JAMB Data'), 'form.jamb_subjects_list': _(u'JAMB Data'), 'form.notice': _(u'Application Process Information'), 'form.pp_school': _(u'Post Primary School Qualification'), 'form.presently_inst': _(u'Presently attending a course or programme'), 'form.fst_sit_fname': _(u'Ordinary Level First Sitting Record'), 'form.scd_sit_fname': _(u'Ordinary Level Second Sitting Record'), 'form.referees': _(u'Referees'), } # Temporarily disabled def xxx_getApplicantsStatistics(self, container): state_stats = {INITIALIZED:0, STARTED:0, PAID:0, SUBMITTED:0, ADMITTED:0, NOT_ADMITTED:0, CREATED:0} faculty_keys = grok.getSite()['faculties'].keys() fac_stats = dict([(i,0) for i in faculty_keys]) for key in container.keys(): state = container[key].state state_stats[state] += 1 cert = getattr(container[key],'course1',None) if cert is not None and state == SUBMITTED: faculty = cert.__parent__.__parent__.__parent__ fac_stats[faculty.__name__] += 1 return state_stats, fac_stats def setPaymentDetails(self, container, payment, applicant): """Set the payment data of an applicant. In contrast to its `StudentsUtils` counterpart, the payment ticket must exist and is an argument of this method. """ timestamp = ("%d" % int(time()*10000))[1:] session = str(container.year) try: session_config = grok.getSite()['configuration'][session] except KeyError: return _(u'Session configuration object is not available.') payment.p_id = "p%s" % timestamp payment.p_item = container.title payment.p_session = container.year payment.amount_auth = 0.0 if applicant.special: if applicant.special_application: fee_name = applicant.special_application + '_fee' payment.amount_auth = getattr(session_config, fee_name, None) payment.p_category = applicant.special_application return elif applicant.__parent__.prefix == 'ictwk': payment.p_category = 'registration' for cat in applicant.registration_cats: payment.amount_auth += REGISTRATION_CATS[cat][1] return elif applicant.container_code.startswith('tsc'): if not applicant.charge: return _(u'No transcript charge selected.') cost = DESTINATION_COST[applicant.charge][1] payment.amount_auth = applicant.no_copies * cost payment.p_category = 'transcript' return else: payment.p_category = 'application' container_fee = container.application_fee if not container_fee: return _('Amount could not be determined.') payment.amount_auth = container_fee return def isPictureEditable(self, container): """False if applicants are not allowed to edit uploaded pictures. """ if container.code.startswith('ase'): return False return container.with_picture