source: main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/students/interfaces.py @ 9526

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

Complete INigeriaStudentOnlinePayment.

  • Property svn:keywords set to Id
File size: 11.5 KB
RevLine 
[8862]1## $Id: interfaces.py 9471 2012-10-30 18:50:14Z 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##
18from zope import schema
[8968]19from zope.interface import Attribute
[8862]20from waeup.kofa.schema import TextLineChoice
21from waeup.kofa.interfaces import SimpleKofaVocabulary, academic_sessions_vocab
22from waeup.kofa.schema import FormattedDate
23from waeup.kofa.schoolgrades import ResultEntryField
24from waeup.kofa.students.vocabularies import nats_vocab
25from waeup.kofa.students.interfaces import (
26    IStudentBase, IUGStudentClearance, IPGStudentClearance,
27    IStudentPersonal, IStudentNavigation, IStudentStudyLevel,
28    IStudentStudyCourse, ICourseTicket
29    )
30from waeup.kofa.students.vocabularies import (
31    nats_vocab, contextual_reg_num_source)
32from kofacustom.nigeria.interfaces import (
33    high_qual, high_grade, exam_types, LGASource)
34from kofacustom.nigeria.interfaces import MessageFactory as _
[8863]35from kofacustom.nigeria.payments.interfaces import INigeriaOnlinePayment
[8862]36
37
[8863]38class INigeriaStudentBase(IStudentBase):
[8862]39    """Representation of student base data.
40
41    """
42
43    reg_number = TextLineChoice(
44        title = _(u'Registration Number'),
45        required = False,
46        readonly = False,
47        source = contextual_reg_num_source,
48        )
49
[8966]50    is_staff = schema.Bool(
51        title = _(u'Staff Member'),
52        required = False,
53        readonly = False,
54        default = False,
55        )
56
[8949]57INigeriaStudentBase['reg_number'].order = IStudentBase[
58    'reg_number'].order
59
[8863]60class INigeriaStudentPersonal(IStudentPersonal):
[8862]61    """Student personal data.
62
63    """
64
[8968]65    is_foreigner = Attribute('True if student is non-Nigerian')
66
[8862]67    marit_stat = schema.Choice(
68        title = u'Maritual Status',
69        default = 'unmarried',
70        required = False,
71        vocabulary = SimpleKofaVocabulary(
72            (_('Unmarried'), 'unmarried'),
73            (_('Married'), 'married'),)
74        )
75
[8923]76    religion = schema.Choice(
77        title = u'Religion',
78        default = 'no_say',
79        required = False,
80        vocabulary = SimpleKofaVocabulary(
81            (_('Muslim'), 'muslim'),
82            (_('Christian'), 'christian'),
83            (_('Others'), 'others'),
84            (_('Prefer not to say'), 'no_say'),)
85        )
86
87    next_kin_name = schema.TextLine(
88        title = _(u'Next of Kin Name'),
89        required = False,
90        readonly = False,
91        )
92
93    next_kin_relation = schema.TextLine(
94        title = _(u'Next of Kin Relationship'),
95        required = False,
96        readonly = False,
97        )
98
99    next_kin_address = schema.Text(
100        title = _(u'Next of Kin Address'),
101        required = False,
102        readonly = False,
103        description = _(u'Please provide email address and/or phone number.'),
104        )
105
106    disabled = schema.Bool(
107        title = u'Disabled',
108        default = False,
109        required = False,
110        )
111
[8863]112class INigeriaUGStudentClearance(IUGStudentClearance):
[8862]113    """Representation of ug student clearance data.
114
115    """
116    date_of_birth = FormattedDate(
117        title = _(u'Date of Birth'),
118        required = False,
119        show_year = True,
120        )
121
122    nationality = schema.Choice(
123        source = nats_vocab,
124        title = _(u'Nationality'),
[9036]125        required = True,
[8862]126        )
127
128    lga = schema.Choice(
129        source = LGASource(),
130        title = _(u'State/LGA (Nigerians only)'),
131        required = False,
132        )
133
134    def_adm = schema.Bool(
135        title = _(u'Deferent of Admission'),
136        required = False,
137        readonly = False,
138        )
139
140    fst_sit_fname = schema.TextLine(
141        title = _(u'Full Name'),
142        required = False,
143        readonly = False,
144        )
145    fst_sit_no = schema.TextLine(
146        title = _(u'Exam Number'),
147        required = False,
148        readonly = False,
149        )
150
151    fst_sit_date = FormattedDate(
152        title = _(u'Exam Date'),
153        required = False,
154        readonly = False,
155        show_year = True,
156        )
157
158    fst_sit_type = schema.Choice(
159        title = _(u'Exam Type'),
160        required = False,
161        readonly = False,
162        vocabulary = exam_types,
163        )
164
165    fst_sit_results = schema.List(
166        title = _(u'Exam Results'),
167        value_type = ResultEntryField(),
168        required = False,
169        readonly = False,
170        default = [],
171        )
172
173    scd_sit_fname = schema.TextLine(
174        title = _(u'Full Name'),
175        required = False,
176        readonly = False,
177        )
178    scd_sit_no = schema.TextLine(
179        title = _(u'Exam Number'),
180        required = False,
181        readonly = False,
182        )
183
184    scd_sit_date = FormattedDate(
185        title = _(u'Exam Date'),
186        required = False,
187        readonly = False,
188        show_year = True,
189        )
190
191    scd_sit_type = schema.Choice(
192        title = _(u'Exam Type'),
193        required = False,
194        readonly = False,
195        vocabulary = exam_types,
196        )
197
198    scd_sit_results = schema.List(
199        title = _(u'Exam Results'),
200        value_type = ResultEntryField(),
201        required = False,
202        readonly = False,
203        default = [],
204        )
205
206    alr_fname = schema.TextLine(
207        title = _(u'Full Name'),
208        required = False,
209        readonly = False,
210        )
211    alr_no = schema.TextLine(
212        title = _(u'Exam Number'),
213        required = False,
214        readonly = False,
215        )
216
217    alr_date = FormattedDate(
218        title = _(u'Exam Date'),
219        required = False,
220        readonly = False,
221        show_year = True,
222        )
223
224    alr_results = schema.List(
225        title = _(u'Exam Results'),
226        value_type = ResultEntryField(),
227        required = False,
228        readonly = False,
229        default = [],
230        )
231
232    hq_type = schema.Choice(
233        title = _(u'Qualification Obtained'),
234        required = False,
235        readonly = False,
236        vocabulary = high_qual,
237        )
238
239    hq_matric_no = schema.TextLine(
240        title = _(u'Former Matric Number'),
241        required = False,
242        readonly = False,
243        )
244
245    hq_degree = schema.Choice(
246        title = _(u'Class of Degree'),
247        required = False,
248        readonly = False,
249        vocabulary = high_grade,
250        )
251
252    hq_school = schema.TextLine(
253        title = _(u'Institution Attended'),
254        required = False,
255        readonly = False,
256        )
257
258    hq_session = schema.TextLine(
259        title = _(u'Years Attended'),
260        required = False,
261        readonly = False,
262        )
263
264    hq_disc = schema.TextLine(
265        title = _(u'Discipline'),
266        required = False,
267        readonly = False,
268        )
269
270
[8863]271class INigeriaPGStudentClearance(INigeriaUGStudentClearance):
[8862]272    """Representation of pg student clearance data.
273
274    """
275
276    hq2_type = schema.Choice(
277        title = _(u'Qualification Obtained'),
278        required = False,
279        readonly = False,
280        vocabulary = high_qual,
281        )
282
283    hq2_matric_no = schema.TextLine(
284        title = _(u'Former Matric Number'),
285        required = False,
286        readonly = False,
287        )
288
289    hq2_degree = schema.Choice(
290        title = _(u'Class of Degree'),
291        required = False,
292        readonly = False,
293        vocabulary = high_grade,
294        )
295
296    hq2_school = schema.TextLine(
297        title = _(u'Institution Attended'),
298        required = False,
299        readonly = False,
300        )
301
302    hq2_session = schema.TextLine(
303        title = _(u'Years Attended'),
304        required = False,
305        readonly = False,
306        )
307
308    hq2_disc = schema.TextLine(
309        title = _(u'Discipline'),
310        required = False,
311        readonly = False,
312        )
313
314    nysc_year = schema.Int(
315        title = _(u'Nysc Year'),
316        required = False,
317        readonly = False,
318        )
319
[8946]320    nysc_location = schema.TextLine(
321        title = _(u'Nysc Location'),
322        required = False,
323        )
324
[8862]325    nysc_lga = schema.Choice(
326        source = LGASource(),
[8946]327        title = _(u'Nysc LGA'),
[8862]328        required = False,
329        )
330
331    employer = schema.TextLine(
332        title = _(u'Employer'),
333        required = False,
334        readonly = False,
335        )
336
337    emp_position = schema.TextLine(
338        title = _(u'Employer Position'),
339        required = False,
340        readonly = False,
341        )
342
343    emp_start = FormattedDate(
344        title = _(u'Start Date'),
345        required = False,
346        readonly = False,
347        show_year = True,
348        )
349
350    emp_end = FormattedDate(
351        title = _(u'End Date'),
352        required = False,
353        readonly = False,
354        show_year = True,
355        )
356
357    emp_reason = schema.TextLine(
358        title = _(u'Reason for Leaving'),
359        required = False,
360        readonly = False,
361        )
362
363    employer2 = schema.TextLine(
364        title = _(u'2nd Employer'),
365        required = False,
366        readonly = False,
367        )
368
369    emp2_position = schema.TextLine(
370        title = _(u'2nd Employer Position'),
371        required = False,
372        readonly = False,
373        )
374
375    emp2_start = FormattedDate(
376        title = _(u'Start Date'),
377        required = False,
378        readonly = False,
379        show_year = True,
380        )
381    emp2_end = FormattedDate(
382        title = _(u'End Date'),
383        required = False,
384        readonly = False,
385        show_year = True,
386        )
387
388    emp2_reason = schema.TextLine(
389        title = _(u'Reason for Leaving'),
390        required = False,
391        readonly = False,
392        )
393
394    former_matric = schema.TextLine(
395        title = _(u'If yes, matric number'),
396        required = False,
397        readonly = False,
398        )
399
400
[8863]401class INigeriaStudent(INigeriaStudentBase,INigeriaUGStudentClearance,
402    INigeriaPGStudentClearance,INigeriaStudentPersonal):
[8862]403    """Representation of a student.
404
405    """
406
[8863]407class INigeriaStudentStudyCourse(IStudentStudyCourse):
[8862]408    """A container for student study levels.
409
410    """
411
[8863]412class INigeriaStudentStudyLevel(IStudentStudyLevel):
[8862]413    """A container for course tickets.
414
415    """
416
[8863]417class INigeriaStudentOnlinePayment(INigeriaOnlinePayment):
[8862]418    """A student payment via payment gateways.
419
420    This Interface does not inherit from IStudentOnlinePayment.
421    Thus all fields from IStudentOnlinePayment have to be repeated here.
422    """
423
[9471]424    p_current = schema.Bool(
425        title = _(u'Current Session Payment'),
426        default = True,
427        required = False,
428        )
429
[8862]430    p_level = schema.Int(
431        title = _(u'Payment Level'),
432        required = False,
433        readonly = True,
434        )
435
[8863]436INigeriaStudentOnlinePayment['p_level'].order = INigeriaStudentOnlinePayment[
[8862]437    'p_session'].order
438
[8863]439class INigeriaCourseTicket(ICourseTicket):
[8862]440    """A course ticket.
441
442    """
443
[8863]444class INigeriaStudentUpdateByRegNo(INigeriaStudent):
[8862]445    """Representation of a student. Skip regular reg_number validation.
446
447    """
448    reg_number = schema.TextLine(
449        title = _(u'Registration Number'),
450        required = False,
451        )
452
[8863]453class INigeriaStudentUpdateByMatricNo(INigeriaStudent):
[8862]454    """Representation of a student. Skip regular matric_number validation.
455
456    """
457    matric_number = schema.TextLine(
458        title = _(u'Matriculation Number'),
459        required = False,
460        )
Note: See TracBrowser for help on using the repository browser.