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

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

Add higher education name field.

  • Property svn:keywords set to Id
File size: 12.0 KB
Line 
1## $Id: interfaces.py 9552 2012-11-06 09:59:04Z 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
19from zope.interface import Attribute
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 _
35from kofacustom.nigeria.payments.interfaces import INigeriaOnlinePayment
36
37
38class INigeriaStudentBase(IStudentBase):
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
50    is_staff = schema.Bool(
51        title = _(u'Staff Member'),
52        required = False,
53        readonly = False,
54        default = False,
55        )
56
57INigeriaStudentBase['reg_number'].order = IStudentBase[
58    'reg_number'].order
59
60class INigeriaStudentPersonal(IStudentPersonal):
61    """Student personal data.
62
63    """
64
65    is_foreigner = Attribute('True if student is non-Nigerian')
66
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
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
112class INigeriaUGStudentClearance(IUGStudentClearance):
113    """Representation of ug student clearance data.
114
115    """
116    officer_comment = schema.Text(
117        title = _(u"Officer's Comment"),
118        required = False,
119        )
120
121    clearance_locked = schema.Bool(
122        title = _(u'Clearance form locked'),
123        default = False,
124        required = False,
125        )
126
127    clr_code = schema.TextLine(
128        title = _(u'CLR Activation Code'),
129        required = False,
130        readonly = False,
131        )
132
133    date_of_birth = FormattedDate(
134        title = _(u'Date of Birth'),
135        required = False,
136        show_year = True,
137        )
138
139    nationality = schema.Choice(
140        source = nats_vocab,
141        title = _(u'Nationality'),
142        required = True,
143        )
144
145    lga = schema.Choice(
146        source = LGASource(),
147        title = _(u'State/LGA (Nigerians only)'),
148        required = False,
149        )
150
151    def_adm = schema.Bool(
152        title = _(u'Deferent of Admission'),
153        required = False,
154        readonly = False,
155        )
156
157    fst_sit_fname = schema.TextLine(
158        title = _(u'Full Name'),
159        required = False,
160        readonly = False,
161        )
162    fst_sit_no = schema.TextLine(
163        title = _(u'Exam Number'),
164        required = False,
165        readonly = False,
166        )
167
168    fst_sit_date = FormattedDate(
169        title = _(u'Exam Date'),
170        required = False,
171        readonly = False,
172        show_year = True,
173        )
174
175    fst_sit_type = schema.Choice(
176        title = _(u'Exam Type'),
177        required = False,
178        readonly = False,
179        vocabulary = exam_types,
180        )
181
182    fst_sit_results = schema.List(
183        title = _(u'Exam Results'),
184        value_type = ResultEntryField(),
185        required = False,
186        readonly = False,
187        default = [],
188        )
189
190    scd_sit_fname = schema.TextLine(
191        title = _(u'Full Name'),
192        required = False,
193        readonly = False,
194        )
195    scd_sit_no = schema.TextLine(
196        title = _(u'Exam Number'),
197        required = False,
198        readonly = False,
199        )
200
201    scd_sit_date = FormattedDate(
202        title = _(u'Exam Date'),
203        required = False,
204        readonly = False,
205        show_year = True,
206        )
207
208    scd_sit_type = schema.Choice(
209        title = _(u'Exam Type'),
210        required = False,
211        readonly = False,
212        vocabulary = exam_types,
213        )
214
215    scd_sit_results = schema.List(
216        title = _(u'Exam Results'),
217        value_type = ResultEntryField(),
218        required = False,
219        readonly = False,
220        default = [],
221        )
222
223    alr_fname = schema.TextLine(
224        title = _(u'Full Name'),
225        required = False,
226        readonly = False,
227        )
228    alr_no = schema.TextLine(
229        title = _(u'Exam Number'),
230        required = False,
231        readonly = False,
232        )
233
234    alr_date = FormattedDate(
235        title = _(u'Exam Date'),
236        required = False,
237        readonly = False,
238        show_year = True,
239        )
240
241    alr_results = schema.List(
242        title = _(u'Exam Results'),
243        value_type = ResultEntryField(),
244        required = False,
245        readonly = False,
246        default = [],
247        )
248
249    hq_type = schema.Choice(
250        title = _(u'Qualification Obtained'),
251        required = False,
252        readonly = False,
253        vocabulary = high_qual,
254        )
255
256    hq_fname = schema.TextLine(
257        title = _(u'Full Name'),
258        required = False,
259        readonly = False,
260        )
261
262    hq_matric_no = schema.TextLine(
263        title = _(u'Former Matric Number'),
264        required = False,
265        readonly = False,
266        )
267
268    hq_degree = schema.Choice(
269        title = _(u'Class of Degree'),
270        required = False,
271        readonly = False,
272        vocabulary = high_grade,
273        )
274
275    hq_school = schema.TextLine(
276        title = _(u'Institution Attended'),
277        required = False,
278        readonly = False,
279        )
280
281    hq_session = schema.TextLine(
282        title = _(u'Years Attended'),
283        required = False,
284        readonly = False,
285        )
286
287    hq_disc = schema.TextLine(
288        title = _(u'Discipline'),
289        required = False,
290        readonly = False,
291        )
292
293
294class INigeriaPGStudentClearance(INigeriaUGStudentClearance):
295    """Representation of pg student clearance data.
296
297    """
298
299    hq2_type = schema.Choice(
300        title = _(u'Qualification Obtained'),
301        required = False,
302        readonly = False,
303        vocabulary = high_qual,
304        )
305
306    hq2_matric_no = schema.TextLine(
307        title = _(u'Former Matric Number'),
308        required = False,
309        readonly = False,
310        )
311
312    hq2_degree = schema.Choice(
313        title = _(u'Class of Degree'),
314        required = False,
315        readonly = False,
316        vocabulary = high_grade,
317        )
318
319    hq2_school = schema.TextLine(
320        title = _(u'Institution Attended'),
321        required = False,
322        readonly = False,
323        )
324
325    hq2_session = schema.TextLine(
326        title = _(u'Years Attended'),
327        required = False,
328        readonly = False,
329        )
330
331    hq2_disc = schema.TextLine(
332        title = _(u'Discipline'),
333        required = False,
334        readonly = False,
335        )
336
337    nysc_year = schema.Int(
338        title = _(u'Nysc Year'),
339        required = False,
340        readonly = False,
341        )
342
343    nysc_location = schema.TextLine(
344        title = _(u'Nysc Location'),
345        required = False,
346        )
347
348    nysc_lga = schema.Choice(
349        source = LGASource(),
350        title = _(u'Nysc LGA'),
351        required = False,
352        )
353
354    employer = schema.TextLine(
355        title = _(u'Employer'),
356        required = False,
357        readonly = False,
358        )
359
360    emp_position = schema.TextLine(
361        title = _(u'Employer Position'),
362        required = False,
363        readonly = False,
364        )
365
366    emp_start = FormattedDate(
367        title = _(u'Start Date'),
368        required = False,
369        readonly = False,
370        show_year = True,
371        )
372
373    emp_end = FormattedDate(
374        title = _(u'End Date'),
375        required = False,
376        readonly = False,
377        show_year = True,
378        )
379
380    emp_reason = schema.TextLine(
381        title = _(u'Reason for Leaving'),
382        required = False,
383        readonly = False,
384        )
385
386    employer2 = schema.TextLine(
387        title = _(u'2nd Employer'),
388        required = False,
389        readonly = False,
390        )
391
392    emp2_position = schema.TextLine(
393        title = _(u'2nd Employer Position'),
394        required = False,
395        readonly = False,
396        )
397
398    emp2_start = FormattedDate(
399        title = _(u'Start Date'),
400        required = False,
401        readonly = False,
402        show_year = True,
403        )
404    emp2_end = FormattedDate(
405        title = _(u'End Date'),
406        required = False,
407        readonly = False,
408        show_year = True,
409        )
410
411    emp2_reason = schema.TextLine(
412        title = _(u'Reason for Leaving'),
413        required = False,
414        readonly = False,
415        )
416
417    former_matric = schema.TextLine(
418        title = _(u'If yes, matric number'),
419        required = False,
420        readonly = False,
421        )
422
423
424class INigeriaStudent(INigeriaStudentBase,INigeriaUGStudentClearance,
425    INigeriaPGStudentClearance,INigeriaStudentPersonal):
426    """Representation of a student.
427
428    """
429
430class INigeriaStudentStudyCourse(IStudentStudyCourse):
431    """A container for student study levels.
432
433    """
434
435class INigeriaStudentStudyLevel(IStudentStudyLevel):
436    """A container for course tickets.
437
438    """
439
440class INigeriaStudentOnlinePayment(INigeriaOnlinePayment):
441    """A student payment via payment gateways.
442
443    This Interface does not inherit from IStudentOnlinePayment.
444    Thus all fields from IStudentOnlinePayment have to be repeated here.
445    """
446
447    p_current = schema.Bool(
448        title = _(u'Current Session Payment'),
449        default = True,
450        required = False,
451        )
452
453    p_level = schema.Int(
454        title = _(u'Payment Level'),
455        required = False,
456        )
457
458INigeriaStudentOnlinePayment['p_level'].order = INigeriaStudentOnlinePayment[
459    'p_session'].order
460
461class INigeriaCourseTicket(ICourseTicket):
462    """A course ticket.
463
464    """
465
466class INigeriaStudentUpdateByRegNo(INigeriaStudent):
467    """Representation of a student. Skip regular reg_number validation.
468
469    """
470    reg_number = schema.TextLine(
471        title = _(u'Registration Number'),
472        required = False,
473        )
474
475class INigeriaStudentUpdateByMatricNo(INigeriaStudent):
476    """Representation of a student. Skip regular matric_number validation.
477
478    """
479    matric_number = schema.TextLine(
480        title = _(u'Matriculation Number'),
481        required = False,
482        )
Note: See TracBrowser for help on using the repository browser.