## $Id: utils.py 13816 2016-04-08 05:26:51Z 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 from waeup.uniben.interfaces import MessageFactory as _ class CustomApplicantsUtils(NigeriaApplicantsUtils): """A collection of parameters and methods subject to customization. """ 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': ['Pre-Degree Studies', 'PRE'], 'cbt': ['UNIBEN CBT Practice Test', 'CBT'], 'afas': ['Asaba Programmes', 'ASA'], 'afak': ['Akoka Programmes', 'AKO'], 'ictwk': ['ICT Week Registration', 'ICT'], } # 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] else: payment.p_category = 'application' container_fee = container.application_fee if container_fee: payment.amount_auth = container_fee return payment.amount_auth = session_config.application_fee if payment.amount_auth in (0.0, None): return _('Amount could not be determined.') return