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

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

Add missing import.

  • Property svn:keywords set to Id
File size: 3.5 KB
RevLine 
[7853]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
[16481]21from zope.component import getUtility
[16482]22from waeup.kofa.interfaces import IExtFileStore, IFileStoreNameChooser
[9064]23from waeup.kofa.applicants.applicant import ApplicantFactory
[8012]24from waeup.kofa.utils.helpers import attrs_to_fields
[9064]25from kofacustom.nigeria.applicants.applicant import NigeriaApplicant
[8020]26from waeup.uniben.applicants.interfaces import(
[11785]27    ICustomApplicant, ICustomUGApplicantEdit, ICustomPGApplicantEdit,
[16078]28    IPUTMEApplicantEdit, ITranscriptApplicant)
[7853]29
[9064]30class CustomApplicant(NigeriaApplicant):
[7853]31
[8928]32    grok.implements(ICustomApplicant, ICustomUGApplicantEdit,
[16078]33        ICustomPGApplicantEdit, IPUTMEApplicantEdit, ITranscriptApplicant)
[8196]34    grok.provides(ICustomApplicant)
[8012]35
[16229]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
[11784]47    def admchecking_fee_paid(self):
[11785]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
[11784]56        for key in self.keys():
57            ticket = self[key]
[11785]58            if ticket.p_state == 'paid' and \
59                ticket.p_category == 'admission_checking':
[11784]60                return True
61        return False
62
[16481]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
[9064]79# Set all attributes of CustomApplicant required in ICustomApplicant as field
[8012]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.
[8196]83CustomApplicant = attrs_to_fields(CustomApplicant)
[8012]84
[8196]85class CustomApplicantFactory(ApplicantFactory):
[8012]86    """A factory for customized applicants.
[7853]87    """
88
89    def __call__(self, *args, **kw):
[8196]90        return CustomApplicant()
[7853]91
92    def getInterfaces(self):
[8196]93        return implementedBy(CustomApplicant)
Note: See TracBrowser for help on using the repository browser.