source: main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/students/viewlets.py @ 16276

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

Only fresh students are allowed to edit personal (bio) data. No idea why!

  • Property svn:keywords set to Id
File size: 6.5 KB
RevLine 
[10765]1## $Id: viewlets.py 16258 2020-09-29 20:20:08Z 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
[15802]20from zope.component import getUtility
[15849]21from waeup.kofa.interfaces import REQUESTED, IExtFileStore
[10765]22from waeup.kofa.browser.viewlets import ManageActionButton
[15802]23from waeup.kofa.students.interfaces import IStudent, IStudentsUtils
[15563]24from kofacustom.iuokada.students.interfaces import (
[16087]25    ICustomStudentStudyCourse, ICustomStudentStudyLevel, ICustomStudent,
26    ICustomStudentStudyCourse)
[12430]27from waeup.kofa.students.fileviewlets import (
[12450]28    StudentFileDisplay, StudentFileUpload, StudentImage)
[10765]29from waeup.kofa.students.browser import (
[13062]30    ExportPDFClearanceSlip, StudyCourseDisplayFormPage,
[15802]31    StudyLevelDisplayFormPage, StudentBaseDisplayFormPage)
[16015]32from waeup.kofa.students.viewlets import (
[16252]33    AddPreviousPaymentActionButton, AddBalancePaymentActionButton,
34    StudentPersonalEditActionButton)
[10765]35
36from kofacustom.nigeria.interfaces import MessageFactory as _
[15650]37
[16252]38class StudentPersonalEditActionButton(StudentPersonalEditActionButton):
[16256]39    text = _('Edit registration bio data')
[16252]40
[16258]41    @property
42    def target_url(self):
43        if not self.context.is_fresh:
44            return ''
45        return self.view.url(self.view.context, self.target)
46
[15859]47class SwitchLibraryAccessActionButton(ManageActionButton):
48    grok.order(7)
49    grok.context(ICustomStudent)
50    grok.view(StudentBaseDisplayFormPage)
51    grok.require('waeup.switchLibraryAccess')
52    text = _('Switch library access')
53    target = 'switch_library_access'
54    icon = 'actionicon_book.png'
55
[16154]56class MakePaymentActionButton(ManageActionButton):
57    grok.order(8)
58    grok.context(ICustomStudent)
59    grok.view(StudentBaseDisplayFormPage)
60    grok.require('waeup.handleStudent')
61    text = _('Make payment now')
62    target = 'payments/addop'
63    icon = 'actionicon_pay.png'
64
[16256]65class EditBioDataActionButton(ManageActionButton):
[16252]66    grok.order(9)
67    grok.context(ICustomStudent)
68    grok.view(StudentBaseDisplayFormPage)
69    grok.require('waeup.handleStudent')
[16256]70    text = _('Edit registration bio data now')
[16252]71    target = 'edit_personal'
72
[16258]73    @property
74    def target_url(self):
75        if not self.context.is_fresh:
76            return ''
77        return self.view.url(self.view.context, self.target)
78
[16252]79class PersonalDataSlipActionButton(ManageActionButton):
[16087]80    grok.order(10)
[16252]81    grok.context(ICustomStudent)
82    grok.view(StudentBaseDisplayFormPage)
[16087]83    grok.require('waeup.viewStudent')
[16256]84    text = _('Download bio data slip')
[16252]85    target = 'personal_slip.pdf'
[16087]86    icon = 'actionicon_pdf.png'
87
[16258]88    @property
89    def target_url(self):
90        if not self.context.is_fresh:
91            return ''
92        return self.view.url(self.view.context, self.target)
93
[16015]94class AddBalancePaymentActionButton(AddBalancePaymentActionButton):
[16031]95    grok.require('waeup.payStudent')
[15859]96
[15802]97class GetMatricNumberActionButton(ManageActionButton):
98    grok.order(10)
[16252]99    grok.context(ICustomStudent)
[15802]100    grok.view(StudentBaseDisplayFormPage)
[15805]101    grok.require('waeup.manageStudent')
[15802]102    icon = 'actionicon_count.png'
103    text = _('Get Matriculation Number')
104
105    @property
106    def target_url(self):
107        students_utils = getUtility(IStudentsUtils)
108        if self.context.matric_number:
109            return ''
110        error, matric_number = students_utils.constructMatricNumber(
111            self.context)
112        if error:
113            return ''
114        return self.view.url(self.view.context, 'get_matric_number')
115
[16252]116class StudyCourseDataSlipActionButton(ManageActionButton):
117    grok.order(10)
118    grok.context(ICustomStudentStudyCourse)
119    grok.view(StudyCourseDisplayFormPage)
120    grok.require('waeup.viewStudent')
121    text = _('Download study course slip')
122    target = 'studycourse_slip.pdf'
123    icon = 'actionicon_pdf.png'
124
[15859]125# Library
126
127class LibraryIdCardActionButton(ManageActionButton):
128    grok.order(10)
129    grok.context(ICustomStudent)
130    grok.view(StudentBaseDisplayFormPage)
131    grok.require('waeup.viewStudent')
132    icon = 'actionicon_pdf.png'
133    text = _('Download Library Id Card')
134    target = 'lib_idcard.pdf'
135
136    @property
137    def target_url(self):
138        if self.context.library:
139            return self.view.url(self.view.context, self.target)
140        return
141
[15650]142# Signature
143
144class SignatureDisplay(StudentFileDisplay):
145    """Signature display viewlet.
146    """
147    grok.order(2)
148    label = _(u'Signature')
149    title = _(u'Signature Scan')
150    download_name = u'signature'
151
152class SignatureSlip(SignatureDisplay):
153    grok.view(ExportPDFClearanceSlip)
154
155class SignatureUpload(StudentFileUpload):
156    """Signature upload viewlet.
157    """
158    grok.order(2)
159    label = _(u'Signature')
160    title = _(u'Signature Scan')
161    download_name = u'signature'
162
163class SignatureImage(StudentImage):
[15942]164    """Renders signature scan.
[15650]165    """
166    grok.name('signature')
167    download_name = u'signature'
168
[15849]169class SignatureDownloadButton(ManageActionButton):
170
171    grok.order(12)
172    grok.context(IStudent)
173    grok.view(StudentBaseDisplayFormPage)
174    grok.require('waeup.manageStudent')
175    target = 'signature'
176    text = _('Signature')
177    icon = 'actionicon_signature.png'
178
179    @property
180    def target_url(self):
181        image = getUtility(IExtFileStore).getFileByContext(
182            self.context, attr='signature')
183        if not image:
184            return ''
185        return self.view.url(self.view.context, self.target)
186
[15654]187# JAMB Result
188
189class JAMBResultDisplay(StudentFileDisplay):
190    """JAMB Result display viewlet.
191    """
192    grok.order(9)
193    label = _(u'JAMB Result')
194    title = _(u'JAMB Result')
195    download_name = u'jamb'
196
197class JAMBResultSlip(JAMBResultDisplay):
198    grok.view(ExportPDFClearanceSlip)
199
200class JAMBResultUpload(StudentFileUpload):
201    """JAMB Result upload viewlet.
202    """
203    grok.order(9)
204    label = _(u'JAMB Result')
205    title = _(u'JAMB Result Scan')
206    download_name = u'jamb'
207
208class JAMBResultImage(StudentImage):
209    """Renders JAMB Result scan.
210    """
211    grok.name('jamb')
212    download_name = u'jamb'
213
Note: See TracBrowser for help on using the repository browser.