source: main/waeup.uniben/trunk/src/waeup/uniben/applicants/browser.py @ 14136

Last change on this file since 14136 was 14105, checked in by Henrik Bettermann, 8 years ago

Implement stuff which has been removed from kofaustom.nigeria, see r14093.

  • Property svn:keywords set to Id
File size: 25.0 KB
RevLine 
[8012]1## $Id: browser.py 14105 2016-08-22 09:09:31Z 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"""UI components for basic applicants and related components.
19"""
[10287]20import grok
[11784]21from time import time
[11782]22from zope.component import getUtility, createObject
[14105]23from zope.formlib.textwidgets import BytesDisplayWidget
[11736]24from zope.security import checkPermission
[13552]25from zope.i18n import translate
[11784]26from hurry.workflow.interfaces import IWorkflowState
27from waeup.kofa.browser.layout import action, UtilityView
[13552]28from waeup.kofa.interfaces import IExtFileStore, IKofaUtils
[10587]29from waeup.kofa.applicants.browser import (
[11728]30    ApplicantRegistrationPage, ApplicantsContainerPage,
[11782]31    ApplicationFeePaymentAddPage,
[11784]32    OnlinePaymentApprovePage,
33    ExportPDFPageApplicationSlip)
[11782]34from waeup.kofa.applicants.interfaces import (
35    ISpecialApplicant, IApplicantsUtils)
[13558]36from waeup.kofa.browser.interfaces import IPDFCreator
[10378]37from kofacustom.nigeria.applicants.browser import (
38    NigeriaApplicantDisplayFormPage,
[11736]39    NigeriaApplicantManageFormPage,
[13796]40    NigeriaApplicantEditFormPage,
[10378]41    NigeriaPDFApplicationSlip)
[11782]42from waeup.uniben.applicants.interfaces import (
[14105]43    ICustomApplicant,
44    IUnibenRegistration,
45    ICustomUGApplicant,
46    ICustomPGApplicant,
47    ICustomPGApplicantEdit,
48    ICustomUGApplicantEdit,
49    IPUTMEApplicantEdit)
[13825]50from waeup.kofa.applicants.workflow import ADMITTED, PAID, STARTED
[14105]51from kofacustom.nigeria.applicants.interfaces import (
52    UG_OMIT_DISPLAY_FIELDS,
53    UG_OMIT_PDF_FIELDS,
54    UG_OMIT_MANAGE_FIELDS,
55    UG_OMIT_EDIT_FIELDS,
56    CBT_OMIT_DISPLAY_FIELDS,
57    CBT_OMIT_PDF_FIELDS,
58    CBT_OMIT_MANAGE_FIELDS,
59    CBT_OMIT_EDIT_FIELDS,
60    AFFIL_OMIT_DISPLAY_FIELDS,
61    AFFIL_OMIT_PDF_FIELDS,
62    AFFIL_OMIT_MANAGE_FIELDS,
63    AFFIL_OMIT_EDIT_FIELDS,
64    PG_OMIT_DISPLAY_FIELDS,
65    PG_OMIT_PDF_FIELDS,
66    PG_OMIT_MANAGE_FIELDS,
67    PG_OMIT_EDIT_FIELDS,
68    PUTME_OMIT_DISPLAY_FIELDS,
69    PUTME_OMIT_PDF_FIELDS,
70    PUTME_OMIT_MANAGE_FIELDS,
71    PUTME_OMIT_EDIT_FIELDS,
72    PUTME_OMIT_RESULT_SLIP_FIELDS,
73    PUDE_OMIT_DISPLAY_FIELDS,
74    PUDE_OMIT_PDF_FIELDS,
75    PUDE_OMIT_MANAGE_FIELDS,
76    PUDE_OMIT_EDIT_FIELDS,
77    PUDE_OMIT_RESULT_SLIP_FIELDS,
78    PRE_OMIT_DISPLAY_FIELDS,
79    PRE_OMIT_PDF_FIELDS,
80    PRE_OMIT_MANAGE_FIELDS,
81    PRE_OMIT_EDIT_FIELDS,
82    )
[8012]83
[10378]84from waeup.uniben.interfaces import MessageFactory as _
85
[10338]86PASTQ_ALL = ['ADT','EPCS','ESM','HEK','VTE']
[8012]87
[10338]88PASTQ_AL = ['ENL','FAA','FOL','HIS','LAL',
89            'PHL','THR','BUL','JIL','LAW','PPL','PUL'] + PASTQ_ALL
90
91PASTQ_BS = ['ANT','ANY','CHH','COH','HAE','MED','MEH','PHS','SUR',
92            'PCG','PCH','PCO', 'PCT','PHA','PHM','PMB','ANA','MBC',
93            'MLS','NSC','PSY','DPV','ODR','OSP','PER', 'RES','AEB',
94            'BCH','BOT','CED','EVL','MCB','OPT','PBB','SLT','ZOO',
95            'AEE','ANS', 'CRS','FIS','FOW','SOS'] + PASTQ_ALL
96
97PASTQ_EPS = ['CHE','CVE','DMIC','EEE','MCH','PEE','PRE','CHM',
98             'CSC','GLY','MTH','PHY'] + PASTQ_ALL
99
100PASTQ_MSS = ['ACC','BNK','BUS','ECO','GEO','POL','SAA','SWK'] + PASTQ_ALL
101
[13814]102REGISTRATION_OMIT_DISPLAY_FIELDS = (
103    'locked',
104    'suspended',
[13796]105    )
106
[13814]107REGISTRATION_OMIT_EDIT_FIELDS = (
108    'locked',
109    'suspended',
110    'applicant_id',
111    )
112
113REGISTRATION_OMIT_MANAGE_FIELDS = (
114    'applicant_id',
115    )
116
117
118REGISTRATION_OMIT_PDF_FIELDS = (
119    'locked',
120    'suspended',
121    )
[10587]122class CustomApplicantsContainerPage(ApplicantsContainerPage):
123    """The standard view for regular applicant containers.
124    """
125
126    @property
127    def form_fields(self):
128        form_fields = super(CustomApplicantsContainerPage, self).form_fields
[10589]129        usertype = getattr(self.request.principal, 'user_type', None)
130        if self.request.principal.id == 'zope.anybody' or  \
131            usertype in ('applicant', 'student'):
[10587]132            return form_fields.omit('application_fee')
133        return form_fields
134
[8630]135class CustomApplicantRegistrationPage(ApplicantRegistrationPage):
136    """Captcha'd registration page for applicants.
137    """
138
[10337]139    def _redirect(self, email, password, applicant_id):
140        # Forward email and credentials to landing page.
141        self.redirect(self.url(self.context, 'registration_complete',
142            data = dict(email=email, password=password,
143            applicant_id=applicant_id)))
144        return
[10287]145
[10375]146class CustomApplicantDisplayFormPage(NigeriaApplicantDisplayFormPage):
147    """A display view for applicant data.
[10287]148    """
[10375]149    grok.template('applicantdisplaypage')
[10338]150
[13887]151    @property
152    def display_payments(self):
153        if self.context.special or self.target == 'ictwk':
154            return True
155        return getattr(self.context.__parent__, 'application_fee', None)
156
[10622]157    def _show_pastq_putme(self):
[13947]158        return self.target.startswith('ase') \
[10375]159               and self.context.state in ('paid', 'submitted') \
[10338]160               and getattr(self.context, 'course1') is not None
161
162    @property
[14090]163    def depcode(self):
164        try:
165            code = self.context.course1.__parent__.__parent__.code
166            return code
167        except:
168            return
169
170    @property
[10338]171    def show_pastq_al(self):
[14090]172        return self._show_pastq_putme() and self.depcode in PASTQ_AL
[10338]173
174    @property
175    def show_pastq_bs(self):
[14090]176        return self._show_pastq_putme() and self.depcode in PASTQ_BS
[10338]177
178    @property
179    def show_pastq_eps(self):
[14090]180        return self._show_pastq_putme() and self.depcode in PASTQ_EPS
[10338]181
182    @property
183    def show_pastq_mss(self):
[14090]184        return self._show_pastq_putme() and self.depcode in PASTQ_MSS
[10338]185
[10622]186    @property
187    def show_pastq_pude(self):
188        return self.target.startswith('pude') \
189               and self.context.state in ('paid', 'submitted')
190
[13814]191    @property
192    def label(self):
193        if self.target == 'ictwk':
194            container_title = self.context.__parent__.title
195            return _('${a} <br /> Registration Record ${b}', mapping = {
196                'a':container_title, 'b':self.context.application_number})
197        return super(CustomApplicantDisplayFormPage, self).label
[11784]198
[11782]199    @property
200    def form_fields(self):
[13796]201        if self.target == 'ictwk':
[13814]202            form_fields = grok.AutoFields(IUnibenRegistration)
203            for field in REGISTRATION_OMIT_DISPLAY_FIELDS:
[13796]204                form_fields = form_fields.omit(field)
205            return form_fields
[14105]206        elif self.target is not None and self.target.startswith('pg'):
207            form_fields = grok.AutoFields(ICustomPGApplicant)
208            for field in PG_OMIT_DISPLAY_FIELDS:
209                form_fields = form_fields.omit(field)
210        elif self.target is not None and self.target.startswith('pre'):
211            form_fields = grok.AutoFields(ICustomPGApplicant)
212            for field in PRE_OMIT_DISPLAY_FIELDS:
213                form_fields = form_fields.omit(field)
214        elif self.target is not None and self.target.startswith('cbt'):
215            form_fields = grok.AutoFields(ICustomUGApplicant)
216            for field in CBT_OMIT_DISPLAY_FIELDS:
217                form_fields = form_fields.omit(field)
218        elif self.target is not None and self.target.startswith('akj'):
219            form_fields = grok.AutoFields(ICustomPGApplicant)
220            for field in PRE_OMIT_DISPLAY_FIELDS:
221                form_fields = form_fields.omit(field)
222        elif self.target is not None and self.target.startswith('ak'):
223            form_fields = grok.AutoFields(ICustomUGApplicant)
224            for field in AFFIL_OMIT_DISPLAY_FIELDS:
225                form_fields = form_fields.omit(field)
226        elif self.target is not None and self.target.startswith('ase'): # was putme
227            form_fields = grok.AutoFields(ICustomUGApplicant)
228            for field in PUTME_OMIT_DISPLAY_FIELDS:
229                form_fields = form_fields.omit(field)
230        elif self.target is not None and self.target.startswith('pude'):
231            form_fields = grok.AutoFields(ICustomUGApplicant)
232            for field in PUDE_OMIT_DISPLAY_FIELDS:
233                form_fields = form_fields.omit(field)
234        else:
235            form_fields = grok.AutoFields(ICustomUGApplicant)
236            for field in UG_OMIT_DISPLAY_FIELDS:
237                form_fields = form_fields.omit(field)
238        #form_fields['perm_address'].custom_widget = BytesDisplayWidget
239        form_fields['notice'].custom_widget = BytesDisplayWidget
240        if not getattr(self.context, 'student_id'):
241            form_fields = form_fields.omit('student_id')
242        if not getattr(self.context, 'screening_score'):
243            form_fields = form_fields.omit('screening_score')
244        if not getattr(self.context, 'screening_venue') or self._not_paid():
245            form_fields = form_fields.omit('screening_venue')
246        if not getattr(self.context, 'screening_date') or self._not_paid():
247            form_fields = form_fields.omit('screening_date')
[11784]248        if not self.context.admchecking_fee_paid():
249            form_fields = form_fields.omit(
250                'screening_score', 'aggregate', 'student_id')
[11782]251        return form_fields
252
[11784]253    @property
254    def display_actions(self):
255        state = IWorkflowState(self.context).getState()
256        actions = []
257        if state == ADMITTED and not self.context.admchecking_fee_paid():
258            actions = [_('Add admission checking payment ticket')]
259        return actions
260
261
262    def getCourseAdmitted(self):
263        """Return link, title and code in html format to the certificate
264           admitted.
265        """
266        course_admitted = self.context.course_admitted
267        if getattr(course_admitted, '__parent__',None) and \
268            self.context.admchecking_fee_paid():
269            url = self.url(course_admitted)
270            title = course_admitted.title
271            code = course_admitted.code
272            return '<a href="%s">%s - %s</a>' %(url,code,title)
273        return ''
274
[11786]275    @property
276    def admission_checking_info(self):
277        if self.context.state == ADMITTED and \
278            not self.context.admchecking_fee_paid():
279            return _('You must pay the admission checking fee '
280                     'to view your screening results and course admitted.')
281        return
282
[11784]283    @action(_('Add admission checking payment ticket'), style='primary')
284    def addPaymentTicket(self, **data):
285        self.redirect(self.url(self.context, '@@addacp'))
286        return
287
[11728]288class CustomApplicationFeePaymentAddPage(ApplicationFeePaymentAddPage):
289    """ Page to add an online payment ticket
290    """
[10378]291
[11728]292    @property
293    def custom_requirements(self):
294        store = getUtility(IExtFileStore)
295        if not store.getFileByContext(self.context, attr=u'passport.jpg'):
[11782]296            return _('Upload your 1"x1" Red background passport photo before making payment.')
[11728]297        return ''
298
[11784]299class AdmissionCheckingFeePaymentAddPage(UtilityView, grok.View):
300    """ Page to add an admission checking online payment ticket.
301    """
302    grok.context(ICustomApplicant)
303    grok.name('addacp')
304    grok.require('waeup.payApplicant')
305    factory = u'waeup.ApplicantOnlinePayment'
306
307    def _setPaymentDetails(self, payment):
308        container = self.context.__parent__
309        timestamp = ("%d" % int(time()*10000))[1:]
310        session = str(container.year)
311        try:
312            session_config = grok.getSite()['configuration'][session]
313        except KeyError:
314            return _(u'Session configuration object is not available.'), None
315        payment.p_id = "p%s" % timestamp
316        payment.p_item = container.title
317        payment.p_session = container.year
318        payment.amount_auth = 0.0
319        payment.p_category = 'admission_checking'
320        payment.amount_auth = session_config.admchecking_fee
321        if payment.amount_auth in (0.0, None):
322            return _('Amount could not be determined.'), None
323        return
324
[11782]325    def update(self):
[11784]326        if self.context.admchecking_fee_paid():
327              self.flash(
328                  _('Admission checking payment has already been made.'),
329                  type='warning')
330              self.redirect(self.url(self.context))
331              return
[11782]332        payment = createObject(self.factory)
[11784]333        failure = self._setPaymentDetails(payment)
[11782]334        if failure is not None:
335            self.flash(failure[0], type='danger')
336            self.redirect(self.url(self.context))
337            return
338        self.context[payment.p_id] = payment
339        self.flash(_('Payment ticket created.'))
340        self.redirect(self.url(payment))
341        return
[11736]342
[11784]343    def render(self):
344        return
[11736]345
[11784]346
[11782]347class CustomApplicantManageFormPage(NigeriaApplicantManageFormPage):
348
[11736]349    @property
[13887]350    def display_payments(self):
351        if self.context.special or self.target == 'ictwk':
352            return True
353        return getattr(self.context.__parent__, 'application_fee', None)
354
355    @property
[11736]356    def custom_upload_requirements(self):
357        if not checkPermission('waeup.uploadPassportPictures', self.context):
358            return _('You are not entitled to upload passport pictures.')
[11782]359
[13796]360    @property
[13814]361    def label(self):
362        if self.target == 'ictwk':
363            container_title = self.context.__parent__.title
364            return _('${a} <br /> Registration Record ${b}', mapping = {
365                'a':container_title, 'b':self.context.application_number})
366        return super(CustomApplicantManageFormPage, self).label
367
368    @property
[13796]369    def form_fields(self):
370        if self.target == 'ictwk':
[13814]371            form_fields = grok.AutoFields(IUnibenRegistration)
372            for field in REGISTRATION_OMIT_MANAGE_FIELDS:
[13796]373                form_fields = form_fields.omit(field)
[13825]374            state = IWorkflowState(self.context).getState()
375            if state != STARTED:
376                form_fields['registration_cats'].for_display = True
[13814]377            return form_fields
[14105]378        if self.target is not None and self.target.startswith('pg'):
379            form_fields = grok.AutoFields(ICustomPGApplicant)
380            for field in PG_OMIT_MANAGE_FIELDS:
381                form_fields = form_fields.omit(field)
382        elif self.target is not None and self.target.startswith('pre'):
383            form_fields = grok.AutoFields(ICustomPGApplicant)
384            for field in PRE_OMIT_MANAGE_FIELDS:
385                form_fields = form_fields.omit(field)
386        elif self.target is not None and self.target.startswith('cbt'):
387            form_fields = grok.AutoFields(ICustomUGApplicant)
388            for field in CBT_OMIT_MANAGE_FIELDS:
389                form_fields = form_fields.omit(field)
390        elif self.target is not None and self.target.startswith('akj'):
391            form_fields = grok.AutoFields(ICustomPGApplicant)
392            for field in PRE_OMIT_MANAGE_FIELDS:
393                form_fields = form_fields.omit(field)
394        elif self.target is not None and self.target.startswith('ak'):
395            form_fields = grok.AutoFields(ICustomUGApplicant)
396            for field in AFFIL_OMIT_MANAGE_FIELDS:
397                form_fields = form_fields.omit(field)
398        elif self.target is not None and self.target.startswith('ase'): # was putme
399            form_fields = grok.AutoFields(ICustomUGApplicant)
400            for field in PUTME_OMIT_MANAGE_FIELDS:
401                form_fields = form_fields.omit(field)
402        elif self.target is not None and self.target.startswith('pude'):
403            form_fields = grok.AutoFields(ICustomUGApplicant)
404            for field in PUDE_OMIT_MANAGE_FIELDS:
405                form_fields = form_fields.omit(field)
406        else:
407            form_fields = grok.AutoFields(ICustomUGApplicant)
408            for field in UG_OMIT_MANAGE_FIELDS:
409                form_fields = form_fields.omit(field)
410        form_fields['student_id'].for_display = True
411        form_fields['applicant_id'].for_display = True
[13796]412        return form_fields
413
414
415class CustomApplicantEditFormPage(NigeriaApplicantEditFormPage):
416    """An applicant-centered edit view for applicant data.
417    """
418
419    @property
[13887]420    def display_payments(self):
421        if self.context.special or self.target == 'ictwk':
422            return True
423        return getattr(self.context.__parent__, 'application_fee', None)
424
425    @property
[13796]426    def form_fields(self):
427        if self.target == 'ictwk':
[13814]428            form_fields = grok.AutoFields(IUnibenRegistration)
429            for field in REGISTRATION_OMIT_EDIT_FIELDS:
[13796]430                form_fields = form_fields.omit(field)
[13825]431            state = IWorkflowState(self.context).getState()
432            if state != STARTED:
433                form_fields['registration_cats'].for_display = True
[13814]434            return form_fields
[14105]435        if self.target is not None and self.target.startswith('pg'):
436            form_fields = grok.AutoFields(ICustomPGApplicantEdit)
437            for field in PG_OMIT_EDIT_FIELDS:
438                form_fields = form_fields.omit(field)
439        elif self.target is not None and self.target.startswith('pre'):
440            form_fields = grok.AutoFields(ICustomPGApplicantEdit)
441            for field in PRE_OMIT_EDIT_FIELDS:
442                form_fields = form_fields.omit(field)
443        elif self.target is not None and self.target.startswith('cbt'):
444            form_fields = grok.AutoFields(ICustomUGApplicantEdit)
445            for field in CBT_OMIT_EDIT_FIELDS:
446                form_fields = form_fields.omit(field)
447        elif self.target is not None and self.target.startswith('akj'):
448            form_fields = grok.AutoFields(ICustomPGApplicant)
449            for field in PRE_OMIT_EDIT_FIELDS:
450                form_fields = form_fields.omit(field)
451        elif self.target is not None and self.target.startswith('ak'):
452            form_fields = grok.AutoFields(ICustomUGApplicantEdit)
453            for field in AFFIL_OMIT_EDIT_FIELDS:
454                form_fields = form_fields.omit(field)
455        elif self.target is not None and self.target.startswith('ase'): # was putme
456            form_fields = grok.AutoFields(IPUTMEApplicantEdit)
457            for field in PUTME_OMIT_EDIT_FIELDS:
458                form_fields = form_fields.omit(field)
459        elif self.target is not None and self.target.startswith('pude'):
460            form_fields = grok.AutoFields(ICustomUGApplicantEdit)
461            for field in PUDE_OMIT_EDIT_FIELDS:
462                form_fields = form_fields.omit(field)
463        else:
464            form_fields = grok.AutoFields(ICustomUGApplicantEdit)
465            for field in UG_OMIT_EDIT_FIELDS:
466                form_fields = form_fields.omit(field)
467        form_fields['applicant_id'].for_display = True
468        form_fields['reg_number'].for_display = True
[13796]469        return form_fields
470
[13814]471    @property
472    def label(self):
473        if self.target == 'ictwk':
474            container_title = self.context.__parent__.title
475            return _('${a} <br /> Registration Record ${b}', mapping = {
476                'a':container_title, 'b':self.context.application_number})
477        return super(CustomApplicantEditFormPage, self).label
478
[11782]479class CustomOnlinePaymentApprovePage(OnlinePaymentApprovePage):
480    """ Approval view
481    """
482
483    def update(self):
[11784]484        if self.context.p_category == 'admission_checking':
485            if self.context.p_state == 'paid':
486                flashtype = 'warning'
487                msg = _('This ticket has already been paid.')
488                log = None
489            else:
490                self.context.approve()
491                log = 'payment approved: %s' % self.context.p_id
492                msg = _('Payment approved')
493                flashtype = 'success'
494        else:
495            flashtype, msg, log = self.context.approveApplicantPayment()
[11782]496        if log is not None:
497            applicant = self.context.__parent__
498            # Add log message to applicants.log
499            applicant.writeLogMessage(self, log)
500            # Add log message to payments.log
501            self.context.logger.info(
502                '%s,%s,%s,%s,%s,,,,,,' % (
503                applicant.applicant_id,
504                self.context.p_id, self.context.p_category,
505                self.context.amount_auth, self.context.r_code))
506        self.flash(msg, type=flashtype)
507        return
[11784]508
509class CustomExportPDFPageApplicationSlip(ExportPDFPageApplicationSlip):
510    """Deliver a PDF slip of the context.
511    """
512
513    def update(self):
514        super(CustomExportPDFPageApplicationSlip, self).update()
515        if self.context.state == ADMITTED and \
516            not self.context.admchecking_fee_paid():
517            self.flash(
518                _('Please pay admission checking fee before trying to download '
519                  'the application slip.'), type='warning')
520            return self.redirect(self.url(self.context))
521        return
[13552]522
[13557]523class CustomPDFApplicationSlip(NigeriaPDFApplicationSlip):
[13552]524
[13558]525    def _getPDFCreator(self):
[14061]526        if self.target.startswith('ak'):
[13558]527            return getUtility(IPDFCreator, name='akoka_pdfcreator')
528        return getUtility(IPDFCreator)
529
[13552]530    @property
[13814]531    def form_fields(self):
532        if self.target == 'ictwk':
533            form_fields = grok.AutoFields(IUnibenRegistration)
534            for field in REGISTRATION_OMIT_PDF_FIELDS:
535                form_fields = form_fields.omit(field)
536            return form_fields
[14105]537        if self.target is not None and self.target.startswith('pg'):
538            form_fields = grok.AutoFields(ICustomPGApplicant)
539            for field in PG_OMIT_PDF_FIELDS:
540                form_fields = form_fields.omit(field)
541        elif self.target is not None and self.target.startswith('pre'):
542            form_fields = grok.AutoFields(ICustomPGApplicant)
543            for field in PRE_OMIT_PDF_FIELDS:
544                form_fields = form_fields.omit(field)
545        elif self.target is not None and self.target.startswith('cbt'): # uniben
546            form_fields = grok.AutoFields(ICustomUGApplicant)
547            for field in CBT_OMIT_PDF_FIELDS:
548                form_fields = form_fields.omit(field)
549        elif self.target is not None and self.target.startswith('akj'): # uniben
550            form_fields = grok.AutoFields(ICustomPGApplicant)
551            for field in PRE_OMIT_PDF_FIELDS:
552                form_fields = form_fields.omit(field)
553        elif self.target is not None and self.target.startswith('ak'): # uniben
554            form_fields = grok.AutoFields(ICustomUGApplicant)
555            for field in AFFIL_OMIT_PDF_FIELDS:
556                form_fields = form_fields.omit(field)
557        elif self.target is not None and self.target.startswith('ase'): # was putme
558            form_fields = grok.AutoFields(ICustomUGApplicant)
559            if self._reduced_slip():
560                for field in PUTME_OMIT_RESULT_SLIP_FIELDS:
561                    form_fields = form_fields.omit(field)
562            else:
563                for field in PUTME_OMIT_PDF_FIELDS:
564                    form_fields = form_fields.omit(field)
565        elif self.target is not None and self.target.startswith('pude'):
566            form_fields = grok.AutoFields(ICustomUGApplicant)
567            if self._reduced_slip():
568                for field in PUDE_OMIT_RESULT_SLIP_FIELDS:
569                    form_fields = form_fields.omit(field)
570            else:
571                for field in PUDE_OMIT_PDF_FIELDS:
572                    form_fields = form_fields.omit(field)
573        else:
574            form_fields = grok.AutoFields(ICustomUGApplicant)
575            for field in UG_OMIT_PDF_FIELDS:
576                form_fields = form_fields.omit(field)
577        if not getattr(self.context, 'student_id'):
578            form_fields = form_fields.omit('student_id')
579        if not getattr(self.context, 'screening_score'):
580            form_fields = form_fields.omit('screening_score')
581        if not getattr(self.context, 'screening_venue'):
582            form_fields = form_fields.omit('screening_venue')
583        if not getattr(self.context, 'screening_date'):
584            form_fields = form_fields.omit('screening_date')
[13814]585        return form_fields
586
587    @property
[13552]588    def title(self):
589        container_title = self.context.__parent__.title
590        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
591        ar_translation = translate(_('Application Record'),
592            'waeup.kofa', target_language=portal_language)
[13814]593        if self.target == 'ictwk':
594            return '%s - Registration Record %s' % (container_title,
595            self.context.application_number)
[14061]596        elif self.target.startswith('ab'):
[13552]597            return 'Federal College of Education (Technical) Asaba - %s %s %s' % (
598                container_title, ar_translation,
599                self.context.application_number)
[14061]600        elif self.target.startswith('ak'):
[14064]601            return 'Federal College of Education (Technical) Akoka - %s - %s %s' % (
[13552]602                container_title, ar_translation,
603                self.context.application_number)
[13615]604        elif self.target == 'pgn':
605            return 'National Institute for Legislative Studies (NILS) - %s %s %s' % (
606                container_title, ar_translation,
607                self.context.application_number)
[13552]608        return '%s - %s %s' % (container_title,
609            ar_translation, self.context.application_number)
Note: See TracBrowser for help on using the repository browser.