Index: main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/interfaces.py
===================================================================
--- main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/interfaces.py	(revision 15837)
+++ main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/interfaces.py	(revision 15838)
@@ -31,5 +31,6 @@
     contextual_reg_num_source, IApplicantBaseData)
 from kofacustom.nigeria.applicants.interfaces import (
-    LGASource, high_qual, high_grade, exam_types,
+    LGASource, high_qual, high_grade, exam_types, DisabilitiesSource,
+    programme_types_vocab, jambsubjects, validate_jamb_reg_number,
     INigeriaUGApplicant, INigeriaPGApplicant,
     INigeriaApplicantOnlinePayment,
@@ -61,5 +62,5 @@
     )
 
-class ICustomUGApplicant(INigeriaUGApplicant):
+class ICustomUGApplicant(IApplicantBaseData):
     """An undergraduate applicant.
 
@@ -69,4 +70,38 @@
     """
 
+    disabilities = schema.Choice(
+        title = _(u'Disability'),
+        source = DisabilitiesSource(),
+        required = False,
+        )
+    nationality = schema.Choice(
+        source = nats_vocab,
+        title = _(u'Nationality'),
+        required = False,
+        )
+    lga = schema.Choice(
+        source = LGASource(),
+        title = _(u'State/LGA (Nigerians only)'),
+        required = False,
+        )
+    #perm_address = schema.Text(
+    #    title = _(u'Permanent Address'),
+    #    required = False,
+    #    )
+    course1 = schema.Choice(
+        title = _(u'1st Choice Course of Study'),
+        source = AppCatCertificateSource(),
+        required = True,
+        )
+    course2 = schema.Choice(
+        title = _(u'2nd Choice Course of Study'),
+        source = AppCatCertificateSource(),
+        required = False,
+        )
+    programme_type = schema.Choice(
+        title = _(u'Programme Type'),
+        vocabulary = programme_types_vocab,
+        required = False,
+        )
     sponsor = schema.Choice(
         title = _(u'Sponsor'),
@@ -74,5 +109,4 @@
         required = False,
         )
-
     heard_about = schema.Choice(
         title = _(u'How did you hear about IU?'),
@@ -80,13 +114,134 @@
         required = False,
         )
+    fst_sit_fname = schema.TextLine(
+        title = _(u'Full Name'),
+        required = False,
+        readonly = False,
+        )
+    fst_sit_no = schema.TextLine(
+        title = _(u'Exam Number'),
+        required = False,
+        readonly = False,
+        )
+    fst_sit_date = FormattedDate(
+        title = _(u'Exam Date'),
+        required = False,
+        readonly = False,
+        show_year = True,
+        )
+    fst_sit_type = schema.Choice(
+        title = _(u'Exam Type'),
+        required = False,
+        readonly = False,
+        vocabulary = exam_types,
+        )
+    fst_sit_results = schema.List(
+        title = _(u'Exam Results'),
+        value_type = ResultEntryField(),
+        required = False,
+        readonly = False,
+        defaultFactory=list,
+        )
+    scd_sit_fname = schema.TextLine(
+        title = _(u'Full Name'),
+        required = False,
+        readonly = False,
+        )
+    scd_sit_no = schema.TextLine(
+        title = _(u'Exam Number'),
+        required = False,
+        readonly = False,
+        )
+    scd_sit_date = FormattedDate(
+        title = _(u'Exam Date'),
+        required = False,
+        readonly = False,
+        show_year = True,
+        )
+    scd_sit_type = schema.Choice(
+        title = _(u'Exam Type'),
+        required = False,
+        readonly = False,
+        vocabulary = exam_types,
+        )
+    scd_sit_results = schema.List(
+        title = _(u'Exam Results'),
+        value_type = ResultEntryField(),
+        required = False,
+        readonly = False,
+        defaultFactory=list,
+        )
+    jamb_subjects = schema.Text(
+        title = _(u'Subjects and Scores'),
+        required = False,
+        )
+    jamb_subjects_list = schema.List(
+        title = _(u'JAMB Subjects'),
+        required = False,
+        defaultFactory=list,
+        value_type = schema.Choice(
+            vocabulary = jambsubjects
+            #source = JAMBSubjectSource(),
+            ),
+        )
+    jamb_score = schema.Int(
+        title = _(u'Total JAMB Score'),
+        required = False,
+        )
+    #jamb_age = schema.Int(
+    #    title = _(u'Age (provided by JAMB)'),
+    #    required = False,
+    #    )
+    jamb_reg_number = schema.TextLine(
+        title = _(u'JAMB Registration Number'),
+        required = False,
+        constraint=validate_jamb_reg_number,
+        )
+    notice = schema.Text(
+        title = _(u'Notice'),
+        required = False,
+        )
+    screening_venue = schema.TextLine(
+        title = _(u'Screening Venue'),
+        required = False,
+        )
+    screening_date = schema.TextLine(
+        title = _(u'Screening Date'),
+        required = False,
+        )
+    screening_score = schema.Int(
+        title = _(u'Screening Score (%)'),
+        required = False,
+        )
+    aggregate = schema.Int(
+        title = _(u'Aggregate Score (%)'),
+        description = _(u'(average of relative JAMB and PUTME scores)'),
+        required = False,
+        )
+    result_uploaded = schema.Bool(
+        title = _(u'Result uploaded'),
+        default = False,
+        required = False,
+        )
+    student_id = schema.TextLine(
+        title = _(u'Student Id'),
+        required = False,
+        readonly = False,
+        )
+    course_admitted = schema.Choice(
+        title = _(u'Admitted Course of Study'),
+        source = CertificateSource(),
+        required = False,
+        )
+    locked = schema.Bool(
+        title = _(u'Form locked'),
+        default = False,
+        required = False,
+        )
 
 ICustomUGApplicant[
-    'sponsor'].order =  ICustomUGApplicant['lga'].order
+    'locked'].order =  ICustomUGApplicant['suspended'].order
 ICustomUGApplicant[
-    'heard_about'].order =  ICustomUGApplicant['lga'].order
-ICustomUGApplicant[
-    'sponsor'].order =  ICustomUGApplicant['lga'].order
-ICustomUGApplicant[
-    'lga'].order =  ICustomUGApplicant['nationality'].order
+    'result_uploaded'].order =  ICustomUGApplicant['suspended'].order
 
 class ICustomPGApplicant(INigeriaPGApplicant):
