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

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

Do not show personal_updated in custom packages.

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