Index: main/waeup.aaue/trunk/src/waeup/aaue/browser/pdf.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/browser/pdf.py	(revision 9905)
+++ main/waeup.aaue/trunk/src/waeup/aaue/browser/pdf.py	(revision 9914)
@@ -27,10 +27,10 @@
     """
 
-    #header_logo_path = os.path.join(
-    #    os.path.dirname(__file__), 'static', 'pdf_logo.jpg')
-    #watermark_path = os.path.join(
-    #    os.path.dirname(__file__), 'static', 'pdf_watermark.jpg')
+    header_logo_path = os.path.join(
+        os.path.dirname(__file__), 'static', 'pdf_logo.jpg')
+    watermark_path = os.path.join(
+        os.path.dirname(__file__), 'static', 'pdf_watermark.jpg')
 
-    #watermark_pos = [-25, 100]
-    #logo_pos = [507, 720, 40]
+    watermark_pos = [70, 150]
+    logo_pos = [490, 590, 80]
 
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py	(revision 9905)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py	(revision 9914)
@@ -18,13 +18,21 @@
 import grok
 from zope.i18n import translate
+from zope.component import getUtility
 from waeup.kofa.widgets.datewidget import FriendlyDatetimeDisplayWidget
-from waeup.kofa.students.browser import CourseTicketAddFormPage
+from waeup.kofa.interfaces import IKofaUtils
+from waeup.kofa.students.interfaces import IStudentsUtils
+from waeup.kofa.students.browser import (
+    StudentBasePDFFormPage,
+    CourseTicketAddFormPage,
+    StudyLevelDisplayFormPage,
+    ExportPDFCourseRegistrationSlipPage)
 from kofacustom.nigeria.students.browser import (
     NigeriaOnlinePaymentDisplayFormPage,
     NigeriaOnlinePaymentAddFormPage,
     NigeriaExportPDFPaymentSlipPage)
-
 from waeup.aaue.students.interfaces import (
-    ICustomStudentOnlinePayment)
+    ICustomStudentOnlinePayment,
+    ICustomStudentStudyLevel)
+from waeup.aaue.interfaces import MessageFactory as _
 
 class CustomOnlinePaymentDisplayFormPage(NigeriaOnlinePaymentDisplayFormPage):
@@ -53,2 +61,90 @@
     form_fields['creation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
     form_fields['payment_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
+
+class CustomStudyLevelDisplayFormPage(StudyLevelDisplayFormPage):
+    """ Page to display student study levels
+    """
+    grok.context(ICustomStudentStudyLevel)
+    form_fields = grok.AutoFields(ICustomStudentStudyLevel).omit('total_credits')
+    form_fields[
+        'validation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
+
+class CustomExportPDFCourseRegistrationSlipPage(
+    ExportPDFCourseRegistrationSlipPage):
+    """Deliver a PDF slip of the context.
+    """
+    grok.context(ICustomStudentStudyLevel)
+    form_fields = grok.AutoFields(ICustomStudentStudyLevel).omit(
+        'total_credits', 'level_session', 'level_verdict',
+        'validated_by', 'validation_date', 'gpa')
+
+    @property
+    def label(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+        lang = self.request.cookies.get('kofa.language', portal_language)
+        level_title = translate(self.context.level_title, 'waeup.kofa',
+            target_language=lang)
+        line0 = ''
+        if self.context.student.current_mode.endswith('_pt'):
+            line0 = 'DIRECTORATE OF PART-TIME DEGREE PROGRAMMES\n'
+        line1 = translate(_('Course Registration Slip'),
+            'waeup.kofa', target_language=portal_language) \
+            + ' %s' % level_title
+        line2 = translate(_('Session'),
+            'waeup.kofa', target_language=portal_language) \
+            + ' %s' % self.context.getSessionString
+        return '%s%s\n%s' % (line0, line1, line2)
+
+    @property
+    def title(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+        return translate(_('Units Registered'), 'waeup.kofa',
+            target_language=portal_language)
+
+    def _signatures(self):
+        return (_('Student Signature'), _('Head of Department'))
+
+    def render(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+        Sem = translate('Sem.', 'waeup.kofa', target_language=portal_language)
+        Code = translate('Code', 'waeup.kofa', target_language=portal_language)
+        Title = translate('Title', 'waeup.kofa', target_language=portal_language)
+        Dept = translate('Dept.', 'waeup.kofa', target_language=portal_language)
+        Cred = translate('Cred.', 'waeup.kofa', target_language=portal_language)
+        Score = translate('Score', 'waeup.kofa', target_language=portal_language)
+        Grade = translate('Grade', 'waeup.kofa', target_language=portal_language)
+        Signature = translate(_('Course Lecturer\'s Signature'), 'waeup.aaue',
+            target_language=portal_language)
+        studentview = StudentBasePDFFormPage(self.context.student,
+            self.request, self.omit_fields)
+        students_utils = getUtility(IStudentsUtils)
+        tabledata_1 = sorted(
+            [value for value in self.context.values() if value.semester == 1],
+            key=lambda value: str(value.semester) + value.code)
+        tabledata_2 = sorted(
+            [value for value in self.context.values() if value.semester == 2],
+            key=lambda value: str(value.semester) + value.code)
+        tableheader = [(Code,'code', 2.0),
+                         (Title,'title', 5),
+                         (Dept,'dcode', 1.5), #(Faculty,'fcode', 1.5),
+                         (Cred, 'credits', 1.5),
+                         (Score, 'score', 1.4),
+                         (Grade, 'grade', 1.4),
+                         (Signature, 'dummy', 3),
+                         ]
+        if len(self.label.split('\n')) == 3:
+            topMargin = 1.9
+        elif len(self.label.split('\n')) == 2:
+            topMargin = 1.7
+        else:
+            topMargin = 1.5
+        return students_utils.renderPDF(
+            self, 'course_registration_slip.pdf',
+            self.context.student, studentview,
+            tableheader_1=tableheader,
+            tabledata_1=tabledata_1,
+            tableheader_2=tableheader,
+            tabledata_2=tabledata_2,
+            signatures=self._signatures(),
+            topMargin=topMargin
+            )
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/interfaces.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/interfaces.py	(revision 9905)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/interfaces.py	(revision 9914)
@@ -68,4 +68,22 @@
     """
 
+    total_credits_s1 = schema.Int(
+        title = _(u'1st Semester Units'),
+        required = False,
+        readonly = True,
+        )
+
+    total_credits_s2 = schema.Int(
+        title = _(u'2nd Semester Units'),
+        required = False,
+        readonly = True,
+        )
+
+    gpa = schema.Int(
+        title = _(u'GPA'),
+        required = False,
+        readonly = True,
+        )
+
 class ICustomStudentOnlinePayment(ICustomOnlinePayment):
     """A student payment via payment gateways.
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/studylevel.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/studylevel.py	(revision 9905)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/studylevel.py	(revision 9914)
@@ -39,6 +39,23 @@
     grok.provides(ICustomStudentStudyLevel)
 
+    @property
+    def total_credits_s1(self):
+        total = 0
+        for ticket in self.values():
+            if ticket.semester == 1:
+                total += ticket.credits
+        return total
+
+    @property
+    def total_credits_s2(self):
+        total = 0
+        for ticket in self.values():
+            if ticket.semester == 2:
+                total += ticket.credits
+        return total
+
 CustomStudentStudyLevel = attrs_to_fields(
-    CustomStudentStudyLevel, omit=['total_credits', 'gpa'])
+    CustomStudentStudyLevel, omit=[
+    'total_credits', 'total_credits_s1', 'total_credits_s2', 'gpa'])
 
 class CustomStudentStudyLevelFactory(StudentStudyLevelFactory):
