Index: main/waeup.uniben/trunk/src/waeup/uniben/remita/browser.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/remita/browser.py	(revision 17254)
+++ main/waeup.uniben/trunk/src/waeup/uniben/remita/browser.py	(revision 17255)
@@ -178,5 +178,5 @@
                           "beneficiaryAmount":inst_amt,"deductFeeFrom":"1"},
                         )
-            lineitems += ({"lineItemsId":"itemid2","beneficiaryName":"SPGS Scheme ",
+            lineitems += ({"lineItemsId":"itemid2","beneficiaryName":"SPGS Scheme",
                           "beneficiaryAccount":"0025636203","bankCode":"039",
                           "beneficiaryAmount":microfinance_amt,"deductFeeFrom":"0"},
Index: main/waeup.uniben/trunk/src/waeup/uniben/students/browser.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/students/browser.py	(revision 17254)
+++ main/waeup.uniben/trunk/src/waeup/uniben/students/browser.py	(revision 17255)
@@ -881,4 +881,5 @@
         return super(StudentMedicalHistoryEditFormPage, self).update()
 
+
 class ExportPDFMedicalHistorySlip(grok.View):
     """Deliver a PDF slip of the context.
@@ -893,5 +894,5 @@
                    'adm_code', 'date_of_birth',
                    'flash_notice', 'current_mode', 'entry_mode',
-                   'entry_session', 'parents_email', 'study_course',
+                   'entry_session', 'parents_email',
                    'current_level', 'reg_number', 'sex',
                    'certificate')
@@ -919,4 +920,45 @@
             omit_fields=self.omit_fields,)
 
+class ExportPDFTishipSlip(grok.View):
+    """Deliver a PDF slip of the context.
+    """
+    grok.context(ICustomStudent)
+    grok.name('tiship_slip.pdf')
+    grok.require('waeup.viewStudent')
+    prefix = 'form'
+    form_fields = grok.AutoFields(IMedicalHistory).select(
+        'genotype', 'bloodgroup')
+    title = ''
+
+    omit_fields = ('password', 'suspended', 'suspended_comment',
+                   'adm_code',
+                   'flash_notice', 'current_mode', 'entry_mode',
+                   'parents_email',
+                   )
+
+    @property
+    def label(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+        return translate(_('TISHIP Registration Slip of'),
+            'waeup.kofa', target_language=portal_language) \
+            + ' %s' % self.context.display_fullname
+
+
+    def _sigsInFooter(self):
+        return (_('Year of Graduation'),
+                    _('Signature'),
+                    _('Date'),
+                    )
+
+    def render(self):
+        studentview = StudentBasePDFFormPage(self.context.student,
+            self.request, self.omit_fields)
+        students_utils = getUtility(IStudentsUtils)
+        return students_utils.renderPDF(
+            self, 'tiship_slip.pdf',
+            self.context.student, studentview,
+            sigs_in_footer=self._sigsInFooter(),
+            omit_fields=self.omit_fields,)
+
 class PlagTestInfoPage(KofaPage):
     "Landing page after plagiation test payment"
Index: main/waeup.uniben/trunk/src/waeup/uniben/students/interfaces.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/students/interfaces.py	(revision 17254)
+++ main/waeup.uniben/trunk/src/waeup/uniben/students/interfaces.py	(revision 17255)
@@ -215,4 +215,17 @@
         )
 
+
+    # Tiship form
+
+    genotype = schema.TextLine(
+        title = _(u'Genotype'),
+        required = False,
+        )
+
+    bloodgroup = schema.TextLine(
+        title = _(u'Blood Group'),
+        required = False,
+        )
+
 class ICustomStudentPersonal(INigeriaStudentPersonal):
     """Student personal data.
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 17254)
+++ main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_browser.py	(revision 17255)
@@ -1220,2 +1220,14 @@
         open(path, 'wb').write(self.browser.contents)
         print "Sample PDF medical_questionnaire_slip.pdf written to %s" % path
+
+        self.browser.open(self.student_path)
+        self.browser.getLink("Medical Questionnaire").click()
+        self.browser.getControl(name="form.bloodgroup").value = 'A'
+        self.browser.getControl(name="form.genotype").value = 'XYZ'
+        self.browser.getControl("Save").click()
+        self.browser.getLink("Download TISHIP registration slip").click()
+        self.assertEqual(self.browser.headers['Status'], '200 Ok')
+        self.assertEqual(self.browser.headers['Content-Type'], 'application/pdf')
+        path = os.path.join(samples_dir(), 'tiship_slip.pdf')
+        open(path, 'wb').write(self.browser.contents)
+        print "Sample PDF tiship_slip.pdf written to %s" % path
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 17254)
+++ main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_export.py	(revision 17255)
@@ -1,3 +1,3 @@
-import datetime
+    import datetime
 from zope.component import queryUtility
 from zope.interface.verify import verifyObject, verifyClass
@@ -141,6 +141,6 @@
         result = open(self.outfile, 'rb').read()
         self.assertMatches(
-            'asthma,body_pains,breathing,catarrh,company_confirmed,'
-            'company_suspected,cough,diabetes,fever,headaches,hypertension,'
+            'asthma,bloodgroup,body_pains,breathing,catarrh,company_confirmed,'
+            'company_suspected,cough,diabetes,fever,genotype,headaches,hypertension,'
             'lagos_abuja,medical_updated,medicines,negative,obesity,'
             'others,outside,positive,smell,sneezing,sore_throat,taste,'
@@ -148,5 +148,5 @@
             'matric_number,faccode,depcode,state,current_session,'
             'current_level\r\n'
-            ',,,,,,,,,,,,,,,,,,,,,1,,,,A111111,Anna M. Tester,234,'
+            ',,,,,,,,,,,,,,,,,,,,,,,1,,,,A111111,Anna M. Tester,234,'
             'NA,NA,created,2012,200\r\n' , result
             )
Index: main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py	(revision 17254)
+++ main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py	(revision 17255)
@@ -49,4 +49,5 @@
         'form.lagos_abuja': _(u'Travel History'),
         'form.company_suspected': _(u'History of Contact/Infection'),
+        'form.genotype': _(u'TISHIP Registration Form Data'),
         }
 
@@ -94,8 +95,12 @@
         if not student.state in acc_details['allowed_states']:
             return _("You are in the wrong registration state.")
-        if student['studycourse'].current_session != acc_details[
-            'booking_session']:
-            return _('Your current session does not '
-                     'match accommodation session.')
+        #if student['studycourse'].current_session != acc_details[
+        #    'booking_session']:
+        #    return _('Your current session does not '
+        #             'match accommodation session.')
+        if  acc_details['booking_session'] - student[
+            'studycourse'].current_session > self.ACCOMMODATION_SPAN:
+            return _('Your current session does not allow ' + \
+                    'to book accommodation.')
         stage = bt.split('_')[2]
         if not student.is_postgrad and stage != 'fr' and not student[
Index: main/waeup.uniben/trunk/src/waeup/uniben/students/viewlets.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/students/viewlets.py	(revision 17254)
+++ main/waeup.uniben/trunk/src/waeup/uniben/students/viewlets.py	(revision 17255)
@@ -206,4 +206,13 @@
     target = 'medical_questionnaire_slip.pdf'
 
+class TishipSlipActionButton(ManageActionButton):
+    grok.order(2)
+    grok.context(ICustomStudent)
+    grok.view(StudentMedicalHistoryEditFormPage)
+    grok.require('waeup.viewStudent')
+    icon = 'actionicon_pdf.png'
+    text = _('Download TISHIP registration slip')
+    target = 'tiship_slip.pdf'
+
 class PlagTestLinkActionButton(ManageActionButton):
     grok.order(10)  
