Index: main/kofacustom.edocons/trunk/src/kofacustom/edocons/applicants/browser.py
===================================================================
--- main/kofacustom.edocons/trunk/src/kofacustom/edocons/applicants/browser.py	(revision 17682)
+++ main/kofacustom.edocons/trunk/src/kofacustom/edocons/applicants/browser.py	(revision 17683)
@@ -73,9 +73,9 @@
 # UG students are all undergraduate students.
 UG_OMIT_DISPLAY_FIELDS = OMIT_DISPLAY_FIELDS + (
-    'jamb_subjects_list', 'programme_type')
+    'jamb_subjects', 'programme_type')
 UG_OMIT_PDF_FIELDS = UG_OMIT_DISPLAY_FIELDS + ('phone',)
 UG_OMIT_MANAGE_FIELDS = (
     'special_application',
-    'jamb_subjects_list',
+    'jamb_subjects',
     'programme_type',
     #'course1', 'course2', # these 2 have been added and later removed again
@@ -91,7 +91,4 @@
     'cbt_date',
     'jamb_age',
-    #'jamb_subjects',
-    #'jamb_score',
-    #'jamb_reg_number',
     'aggregate')
 
@@ -131,5 +128,5 @@
             form_fields['notice'].custom_widget = BytesDisplayWidget
         if self.context.__parent__.application_category == 'rnnurse':
-            form_fields = form_fields.omit('jamb_reg_number', 'jamb_subjects', 'jamb_score', 'course2')
+            form_fields = form_fields.omit('jamb_reg_number', 'jamb_subjects_list', 'jamb_score', 'course2')
         #form_fields['perm_address'].custom_widget = BytesDisplayWidget
         if not getattr(self.context, 'student_id'):
@@ -168,5 +165,5 @@
                 form_fields = form_fields.omit(field)
         if self.context.__parent__.application_category == 'rnnurse':
-            form_fields = form_fields.omit('jamb_reg_number', 'jamb_subjects', 'jamb_score', 'course2')
+            form_fields = form_fields.omit('jamb_reg_number', 'jamb_subjects_list', 'jamb_score', 'course2')
         if self.context.__parent__.application_category == 'ndnurse':
             form_fields = form_fields.omit('course2')
@@ -212,5 +209,5 @@
                 form_fields = form_fields.omit(field)
         if self.context.__parent__.application_category == 'rnnurse':
-            form_fields = form_fields.omit('jamb_reg_number', 'jamb_subjects', 'jamb_score', 'course2')
+            form_fields = form_fields.omit('jamb_reg_number', 'jamb_subjects_list', 'jamb_score', 'course2')
         if self.context.__parent__.application_category == 'ndnurse':
             form_fields = form_fields.omit('course2')
@@ -247,5 +244,5 @@
                 form_fields = form_fields.omit(field)
         if self.context.__parent__.application_category == 'rnnurse':
-            form_fields = form_fields.omit('jamb_reg_number', 'jamb_subjects', 'jamb_score', 'course2')
+            form_fields = form_fields.omit('jamb_reg_number', 'jamb_subjects_list', 'jamb_score', 'course2')
         if self.context.__parent__.application_category == 'ndnurse':
             form_fields = form_fields.omit('course2')
Index: main/kofacustom.edocons/trunk/src/kofacustom/edocons/applicants/interfaces.py
===================================================================
--- main/kofacustom.edocons/trunk/src/kofacustom/edocons/applicants/interfaces.py	(revision 17682)
+++ main/kofacustom.edocons/trunk/src/kofacustom/edocons/applicants/interfaces.py	(revision 17683)
@@ -42,5 +42,5 @@
 from kofacustom.nigeria.applicants.interfaces import (
     LGASource, high_qual, high_grade, exam_types,
-    jambsubjects,
+    #jambsubjects,
     INigeriaUGApplicant, INigeriaPGApplicant,
     INigeriaApplicantOnlinePayment,
@@ -59,4 +59,33 @@
     curr_year = datetime.now().year
     return range(curr_year - 50, curr_year)
+
+jambsubjects = SimpleKofaVocabulary(
+    (_('English'),'english_language'),
+    #(_('Agricultural Science'),'agricultural_science'),
+    #(_('Arabic'),'arabic'),
+    (_('Biology'),'biology'),
+    #(_('Book Keeping'),'book_keeping'),
+    (_('Chemistry'),'chemistry'),
+    #(_('Christian Religious Studies'),'christian_religious_studies'),
+    #(_('Commerce'),'commerce'),
+    #(_('Economics'),'economics'),
+    #(_('Financial Accounting'),'financial_accounting'),
+    #(_('Fine Art'),'fine_art'),
+    #(_('Food and Nutrition'),'food_and_nutrition'),
+    #(_('French'),'french'),
+    #(_('Geography'),'geography'),
+    #(_('German'),'german'),
+    #(_('Government'),'government'),
+    #(_('Hausa'),'hausa'),
+    #(_('Home Economics'),'home_economics'),
+    #(_('History'),'history'),
+    #(_('Igbo'),'igbo'),
+    #(_('Literature in English'),'literature_in_english'),
+    #(_('Literature in Nigerian Languages'),'literature_in_nigerian_languages'),
+    #(_('Mathematics'),'mathematics'),
+    #(_('Music'),'music'),
+    (_('Physics'),'physics'),
+    #(_('Yoruba'),'yoruba'),
+    )
 
 programme_types_vocab = SimpleKofaVocabulary(
@@ -386,4 +415,11 @@
         )
 
+    @invariant
+    def date_of_birth(applicant):
+        today = datetime.today()
+        age = today.year - applicant.date_of_birth.year - ((today.month, today.day) < (applicant.date_of_birth.month, applicant.date_of_birth.day))
+        if age < 17:
+            raise Invalid(_("Upon application, the candidate must be seventeen years old (17)."))
+
 class ICustomPGApplicant(INigeriaPGApplicant):
     """A postgraduate applicant.
