Index: /main/waeup.uniben/trunk/src/waeup/uniben/students/browser.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/students/browser.py	(revision 17394)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/students/browser.py	(revision 17395)
@@ -76,4 +76,5 @@
     ICustomStudentPersonalEdit,
     IMedicalHistory,
+    ITiship,
     ICustomCourseTicket)
 from waeup.uniben.students.deplinks import DEPLINKS
@@ -462,5 +463,5 @@
     """
 
-    form_fields = grok.AutoFields(ICustomStudentPersonal)
+    form_fields = grok.AutoFields(ICustomStudentPersonal) + grok.AutoFields(ITiship)
     form_fields['perm_address'].custom_widget = BytesDisplayWidget
     form_fields['next_kin_address'].custom_widget = BytesDisplayWidget
@@ -473,5 +474,5 @@
     """
 
-    form_fields = grok.AutoFields(ICustomStudentPersonal)
+    form_fields = grok.AutoFields(ICustomStudentPersonal) + grok.AutoFields(ITiship)
     form_fields['personal_updated'].for_display = True
     form_fields[
@@ -481,6 +482,16 @@
     """ Page to edit personal data
     """
-    form_fields = grok.AutoFields(
-        ICustomStudentPersonalEdit).omit('personal_updated')
+
+    @property
+    def form_fields(self):
+        form_fields = grok.AutoFields(
+            ICustomStudentPersonalEdit).omit('personal_updated') + grok.AutoFields(ITiship)
+        studycourse = self.context['studycourse']
+        certificate = getattr(studycourse,'certificate',None)
+        current_level = studycourse.current_level
+        end_level = certificate.end_level
+        if not self.context.current_level >= end_level:
+            form_fields = form_fields.omit('nysc')
+        return form_fields
 
 class StudyCourseCOEditFormPage(KofaEditFormPage):
@@ -852,5 +863,5 @@
     @property
     def form_fields(self):
-        form_fields = grok.AutoFields(IMedicalHistory)
+        form_fields = grok.AutoFields(IMedicalHistory) + grok.AutoFields(ITiship)
         form_fields['medical_updated'].for_display = True
         for field in ('fever', 'headaches', 'catarrh', 'cough', 'sore_throat',
@@ -929,6 +940,5 @@
     grok.require('waeup.viewStudent')
     prefix = 'form'
-    form_fields = grok.AutoFields(IMedicalHistory).select(
-        'genotype', 'bloodgroup')
+    form_fields = grok.AutoFields(ITiship)
     title = ''
 
Index: /main/waeup.uniben/trunk/src/waeup/uniben/students/export.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/students/export.py	(revision 17394)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/students/export.py	(revision 17395)
@@ -148,5 +148,5 @@
             IMedicalHistory, exclude_attribs=False,))) + (
             'student_id','display_fullname', 'matric_number', 'faccode',
-            'depcode', 'state','current_session', 'current_level')
+            'depcode', 'state','current_session', 'current_level', 'genotype', 'bloodgroup')
     title = 'Medical Questionnaire Data'
 
@@ -161,5 +161,6 @@
                 'matric_number', 'faccode',
                 'depcode', 'state','current_session',
-                'current_level') and student is not None:
+                'current_level',
+                'genotype', 'bloodgroup') and student is not None:
                 value = getattr(student, name, None)
         return super(
Index: /main/waeup.uniben/trunk/src/waeup/uniben/students/interfaces.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/students/interfaces.py	(revision 17394)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/students/interfaces.py	(revision 17395)
@@ -215,6 +215,7 @@
         )
 
-
-    # Tiship form
+class ITiship(IKofaObject):
+    """Student tiship data.
+    """
 
     genotype = schema.TextLine(
@@ -238,4 +239,10 @@
         )
 
+    nysc = schema.Bool(
+        title = _(u'Applying for NYSC'),
+        default = False,
+        required = True,
+        )
+
 class ICustomStudentPersonalEdit(INigeriaStudentPersonalEdit):
     """Interface for editing personal data by students.
@@ -248,4 +255,11 @@
         )
 
+    nysc = schema.Bool(
+        title = _(u'Do you want to apply for NYSC?'),
+        default = False,
+        description = u'Ensure that all your school charges are paid up to date to your graduating session before making this nysc application.',
+        required = True,
+        )
+
 class ICustomUGStudentClearance(INigeriaUGStudentClearance):
     """Representation of ug student clearance data.
@@ -257,5 +271,6 @@
 
 class ICustomStudent(ICustomStudentBase, ICustomUGStudentClearance,
-    ICustomPGStudentClearance, ICustomStudentPersonal, IMedicalHistory):
+    ICustomPGStudentClearance, ICustomStudentPersonal, IMedicalHistory,
+    ITiship):
     """Representation of a student.
     """
Index: /main/waeup.uniben/trunk/src/waeup/uniben/students/student.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/students/student.py	(revision 17394)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/students/student.py	(revision 17395)
@@ -29,5 +29,5 @@
 from kofacustom.nigeria.students.student import NigeriaStudent
 from waeup.uniben.students.interfaces import (
-    ICustomStudent, ICustomStudentPersonalEdit, IMedicalHistory)
+    ICustomStudent, ICustomStudentPersonalEdit, IMedicalHistory, ITiship)
 
 
@@ -38,5 +38,5 @@
     grok.implements(
         ICustomStudent, IStudentNavigation, ICustomStudentPersonalEdit,
-        IMedicalHistory)
+        IMedicalHistory, ITiship)
     grok.provides(ICustomStudent)
 
Index: /main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_browser.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_browser.py	(revision 17394)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_browser.py	(revision 17395)
@@ -1226,4 +1226,5 @@
         self.browser.getControl(name="form.genotype").value = 'XYZ'
         self.browser.getControl("Save").click()
+        self.browser.getLink("Base Data").click()
         self.browser.getLink("Download TISHIP registration slip").click()
         self.assertEqual(self.browser.headers['Status'], '200 Ok')
Index: /main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_export.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_export.py	(revision 17394)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_export.py	(revision 17395)
@@ -141,13 +141,13 @@
         result = open(self.outfile, 'rb').read()
         self.assertMatches(
-            'asthma,bloodgroup,body_pains,breathing,catarrh,company_confirmed,'
-            'company_suspected,cough,diabetes,fever,genotype,headaches,hypertension,'
+            'asthma,body_pains,breathing,catarrh,company_confirmed,'
+            'company_suspected,cough,diabetes,fever,headaches,hypertension,'
             'lagos_abuja,medical_updated,medicines,negative,obesity,'
             'others,outside,positive,smell,sneezing,sore_throat,taste,'
             'vaccination,weakness,student_id,display_fullname,'
             'matric_number,faccode,depcode,state,current_session,'
-            'current_level\r\n'
-            ',,,,,,,,,,,,,,,,,,,,,,,1,,,,A111111,Anna M. Tester,234,'
-            'NA,NA,created,2012,200\r\n' , result
+            'current_level,genotype,bloodgroup\r\n'
+            ',,,,,,,,,,,,,,,,,,,,,1,,,,A111111,Anna M. Tester,234,'
+            'NA,NA,created,2012,200,,\r\n' , result
             )
         return
Index: /main/waeup.uniben/trunk/src/waeup/uniben/students/viewlets.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/students/viewlets.py	(revision 17394)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/students/viewlets.py	(revision 17395)
@@ -209,5 +209,5 @@
     grok.order(2)
     grok.context(ICustomStudent)
-    grok.view(StudentMedicalHistoryEditFormPage)
+    grok.view(StudentBaseDisplayFormPage)
     grok.require('waeup.viewStudent')
     icon = 'actionicon_pdf.png'
