source: main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/students/browser.py @ 9356

Last change on this file since 9356 was 9249, checked in by Henrik Bettermann, 12 years ago

clr_code must not be editable.

  • Property svn:keywords set to Id
File size: 8.2 KB
RevLine 
[8862]1## $Id: browser.py 9249 2012-09-27 21:46:03Z henrik $
2##
3## Copyright (C) 2012 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##
18import grok
19from zope.formlib.textwidgets import BytesDisplayWidget
20from zope.component import getUtility
21from zope.i18n import translate
22from waeup.kofa.widgets.datewidget import FriendlyDatetimeDisplayWidget
23from waeup.kofa.interfaces import IExtFileStore
24from waeup.kofa.browser.layout import action
25from waeup.kofa.students.browser import (
[8904]26    StudentPersonalDisplayFormPage, StudentPersonalManageFormPage,
[8862]27    StudentClearanceManageFormPage, StudentClearanceEditFormPage,
28    StudentClearanceDisplayFormPage, OnlinePaymentFakeApprovePage,
29    ExportPDFClearanceSlipPage, StudentBaseManageFormPage,
[8966]30    StudentBaseDisplayFormPage,
[8862]31    StudentBaseEditFormPage, StudentPersonalEditFormPage,
32    OnlinePaymentDisplayFormPage, OnlinePaymentAddFormPage,
33    OnlinePaymentBreadcrumb, ExportPDFPaymentSlipPage,
34    StudentFilesUploadPage, emit_lock_message)
35from waeup.kofa.students.viewlets import (
36    PaymentReceiptActionButton, StudentPassportActionButton)
37from kofacustom.nigeria.students.interfaces import (
[8863]38    INigeriaStudentBase, INigeriaStudent, INigeriaStudentPersonal,
39    INigeriaUGStudentClearance,INigeriaPGStudentClearance,
[8904]40    INigeriaStudentOnlinePayment
[8862]41    )
42from waeup.kofa.students.workflow import ADMITTED
43from kofacustom.nigeria.interfaces import MessageFactory as _
44
[8863]45class NigeriaOnlinePaymentBreadcrumb(OnlinePaymentBreadcrumb):
[8862]46    """A breadcrumb for payments.
47    """
[8863]48    grok.context(INigeriaStudentOnlinePayment)
[8862]49
50class PaymentReceiptActionButton(PaymentReceiptActionButton):
51    grok.order(4)
[8863]52    grok.context(INigeriaStudentOnlinePayment)
[8862]53
[8966]54class NigeriaStudentBaseDisplayFormPage(StudentBaseDisplayFormPage):
55    """ Page to display student base data
56    """
[9144]57    form_fields = grok.AutoFields(INigeriaStudentBase).omit('password', 'suspended')
[8966]58
[8863]59class NigeriaStudentBaseManageFormPage(StudentBaseManageFormPage):
[8862]60    """ View to manage student base data
61    """
[9144]62    form_fields = grok.AutoFields(INigeriaStudentBase).omit(
63        'student_id', 'adm_code', 'suspended')
[8862]64
[8863]65class NigeriaStudentBaseEditFormPage(StudentBaseEditFormPage):
[8862]66    """ View to edit student base data
67    """
[8863]68    form_fields = grok.AutoFields(INigeriaStudentBase).select(
[8862]69        'email', 'phone')
70
71
[8863]72class NigeriaStudentPersonalDisplayFormPage(StudentPersonalDisplayFormPage):
[8862]73    """ Page to display student personal data
74    """
[8863]75    form_fields = grok.AutoFields(INigeriaStudentPersonal)
[8862]76    form_fields['perm_address'].custom_widget = BytesDisplayWidget
[9053]77    form_fields['next_kin_address'].custom_widget = BytesDisplayWidget
[8862]78
79
[8863]80class NigeriaStudentPersonalEditFormPage(StudentPersonalEditFormPage):
[8862]81    """ Page to edit personal data
82    """
[8863]83    form_fields = grok.AutoFields(INigeriaStudentPersonal)
[8862]84
85
[8904]86class NigeriaStudentPersonalManageFormPage(StudentPersonalManageFormPage):
87    """ Page to edit personal data
88    """
89    form_fields = grok.AutoFields(INigeriaStudentPersonal)
90
91
[8863]92class NigeriaStudentClearanceDisplayFormPage(StudentClearanceDisplayFormPage):
[8862]93    """ Page to display student clearance data
94    """
95
96    @property
97    def form_fields(self):
[9248]98        if self.context.is_postgrad:
[8862]99            form_fields = grok.AutoFields(
[8863]100                INigeriaPGStudentClearance).omit('clearance_locked')
[8862]101        else:
102            form_fields = grok.AutoFields(
[8863]103                INigeriaUGStudentClearance).omit('clearance_locked')
[8862]104        return form_fields
105
[8863]106class NigeriaExportPDFClearanceSlipPage(ExportPDFClearanceSlipPage):
[8862]107    """Deliver a PDF slip of the context.
108    """
109
110    @property
111    def form_fields(self):
[9248]112        if self.context.is_postgrad:
[8862]113            form_fields = grok.AutoFields(
[8863]114                INigeriaPGStudentClearance).omit('clearance_locked')
[8862]115        else:
116            form_fields = grok.AutoFields(
[8863]117                INigeriaUGStudentClearance).omit('clearance_locked')
[8862]118        return form_fields
119
[8863]120class NigeriaStudentClearanceManageFormPage(StudentClearanceManageFormPage):
[8862]121    """ Page to edit student clearance data
122    """
123
124    @property
125    def form_fields(self):
[9248]126        if self.context.is_postgrad:
[9249]127            form_fields = grok.AutoFields(
128                INigeriaPGStudentClearance).omit('clr_code')
[8862]129        else:
[9249]130            form_fields = grok.AutoFields(
131                INigeriaUGStudentClearance).omit('clr_code')
[8862]132        return form_fields
133
[8863]134class NigeriaStudentClearanceEditFormPage(StudentClearanceEditFormPage):
[8862]135    """ View to edit student clearance data by student
136    """
137
138    @property
139    def form_fields(self):
[9248]140        if self.context.is_postgrad:
[8946]141            form_fields = grok.AutoFields(INigeriaPGStudentClearance).omit(
[9249]142            'clearance_locked', 'nysc_location', 'clr_code')
[8862]143        else:
[8946]144            form_fields = grok.AutoFields(INigeriaUGStudentClearance).omit(
[9249]145            'clearance_locked', 'clr_code')
[8862]146        return form_fields
147
148    def dataNotComplete(self):
149        store = getUtility(IExtFileStore)
[9017]150        if not store.getFileByContext(self.context, attr=u'birth_certificate.jpg'):
[8862]151            return _('No birth certificate uploaded.')
152        if not store.getFileByContext(self.context, attr=u'ref_let.jpg'):
153            return _('No referee letter uploaded.')
154        if not store.getFileByContext(self.context, attr=u'acc_let.jpg'):
155            return _('No acceptance letter uploaded.')
156        if not store.getFileByContext(self.context, attr=u'fst_sit_scan.jpg'):
157            return _('No first sitting result uploaded.')
158        return False
159
[8863]160class NigeriaOnlinePaymentDisplayFormPage(OnlinePaymentDisplayFormPage):
[8862]161    """ Page to view an online payment ticket
162    """
[8863]163    grok.context(INigeriaStudentOnlinePayment)
164    form_fields = grok.AutoFields(INigeriaStudentOnlinePayment)
[8862]165    form_fields[
166        'creation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
167    form_fields[
168        'payment_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
169
[8863]170class NigeriaOnlinePaymentAddFormPage(OnlinePaymentAddFormPage):
[8862]171    """ Page to add an online payment ticket
172    """
[8863]173    form_fields = grok.AutoFields(INigeriaStudentOnlinePayment).select(
[8862]174        'p_category')
175
[8863]176class NigeriaOnlinePaymentFakeApprovePage(OnlinePaymentFakeApprovePage):
[8862]177    """ Disable payment approval view for students.
178
179    This view is used for browser tests only and
180    has to be neutralized here!
181    """
182
183    grok.name('fake_approve')
184    grok.require('waeup.managePortal')
185
186    def update(self):
187        return
188
[8863]189class NigeriaExportPDFPaymentSlipPage(ExportPDFPaymentSlipPage):
[8862]190    """Deliver a PDF slip of the context.
191    """
[8863]192    grok.context(INigeriaStudentOnlinePayment)
193    form_fields = grok.AutoFields(INigeriaStudentOnlinePayment)
[8862]194    form_fields['creation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
195    form_fields['payment_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
196
197class StudentPassportActionButton(StudentPassportActionButton):
198
199    @property
200    def target_url(self):
201        slip = getUtility(IExtFileStore).getFileByContext(
202            self.context, 'application_slip')
203        if self.context.state != ADMITTED or slip is not None:
204            return ''
205        return self.view.url(self.view.context, self.target)
206
[8863]207class NigeriaStudentFilesUploadPage(StudentFilesUploadPage):
[8862]208    """ View to upload passport picture.
209
210    Students are not allowed to change the picture if they
211    passed the regular Kofa application.
212    """
213
214    def update(self):
215        slip = getUtility(IExtFileStore).getFileByContext(
216            self.context, 'application_slip')
217        if self.context.state != ADMITTED or slip is not None:
218            emit_lock_message(self)
219            return
220        super(StudentFilesUploadPage, self).update()
221        return
Note: See TracBrowser for help on using the repository browser.