source: main/waeup.uniben/trunk/src/waeup/uniben/applicants/applicant.py @ 16521

Last change on this file since 16521 was 16482, checked in by Henrik Bettermann, 4 years ago

Add missing import.

  • Property svn:keywords set to Id
File size: 3.5 KB
Line 
1## $Id: applicant.py 16482 2021-05-12 15:04:36Z henrik $
2##
3## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
4## This program is free software; you can redistribute it and/or modify
5## it under the terms of the GNU General Public License as published by
6## the Free Software Foundation; either version 2 of the License, or
7## (at your option) any later version.
8##
9## This program is distributed in the hope that it will be useful,
10## but WITHOUT ANY WARRANTY; without even the implied warranty of
11## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12## GNU General Public License for more details.
13##
14## You should have received a copy of the GNU General Public License
15## along with this program; if not, write to the Free Software
16## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17##
18
19import grok
20from zope.interface import implementedBy
21from zope.component import getUtility
22from waeup.kofa.interfaces import IExtFileStore, IFileStoreNameChooser
23from waeup.kofa.applicants.applicant import ApplicantFactory
24from waeup.kofa.utils.helpers import attrs_to_fields
25from kofacustom.nigeria.applicants.applicant import NigeriaApplicant
26from waeup.uniben.applicants.interfaces import(
27    ICustomApplicant, ICustomUGApplicantEdit, ICustomPGApplicantEdit,
28    IPUTMEApplicantEdit, ITranscriptApplicant)
29
30class CustomApplicant(NigeriaApplicant):
31
32    grok.implements(ICustomApplicant, ICustomUGApplicantEdit,
33        ICustomPGApplicantEdit, IPUTMEApplicantEdit, ITranscriptApplicant)
34    grok.provides(ICustomApplicant)
35
36    applicant_graduated_mapping = [
37        ('firstname', 'firstname'),
38        ('middlename', 'middlename'),
39        ('lastname', 'lastname'),
40        ('sex', 'sex'),
41        ('date_of_birth', 'date_of_birth'),
42        ('email', 'email'),
43        ('phone', 'phone'),
44        ('matric_number', 'matric_number'),
45        ]
46
47    def admchecking_fee_paid(self):
48        # We don't charge if admission checking fee is not set.
49        session = str(self.__parent__.year)
50        try:
51            session_config = grok.getSite()['configuration'][session]
52        except KeyError:
53            return True
54        if session_config.admchecking_fee == 0:
55            return True
56        for key in self.keys():
57            ticket = self[key]
58            if ticket.p_state == 'paid' and \
59                ticket.p_category == 'admission_checking':
60                return True
61        return False
62
63    def _copyPassportImage(self, student):
64        """Copy any passport image over to student location.
65        """
66        file_store = getUtility(IExtFileStore)
67        appl_file = file_store.getFileByContext(self)
68        if appl_file is None:
69            return
70        fname = 'passport.jpg'
71        # In Uniben we save JAMB pictures as passport2.jpg.
72        if getattr(self.__parent__, 'prefix', None) in ('ase', 'pude'):
73            fname = 'passport2.jpg'
74        stud_file_id = IFileStoreNameChooser(student).chooseName(
75            attr=fname)
76        file_store.createFile(stud_file_id, appl_file)
77        return
78
79# Set all attributes of CustomApplicant required in ICustomApplicant as field
80# properties. Doing this, we do not have to set initial attributes
81# ourselves and as a bonus we get free validation when an attribute is
82# set.
83CustomApplicant = attrs_to_fields(CustomApplicant)
84
85class CustomApplicantFactory(ApplicantFactory):
86    """A factory for customized applicants.
87    """
88
89    def __call__(self, *args, **kw):
90        return CustomApplicant()
91
92    def getInterfaces(self):
93        return implementedBy(CustomApplicant)
Note: See TracBrowser for help on using the repository browser.