Index: main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/batching.py
===================================================================
--- main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/batching.py	(revision 16815)
+++ main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/batching.py	(revision 16817)
@@ -27,8 +27,10 @@
     ICustomStudent, ICustomStudentUpdateByRegNo,
     ICustomStudentUpdateByMatricNo,
-    ICustomStudentOnlinePayment
+    ICustomStudentOnlinePayment,
+    ICustomStudentStudyLevel
     )
 from waeup.kofa.students.batching import (
-    StudentProcessor, StudentOnlinePaymentProcessor)
+    StudentProcessor, StudentOnlinePaymentProcessor,
+    StudentStudyLevelProcessor)
 
 class CustomStudentProcessor(StudentProcessor):
@@ -43,2 +45,14 @@
     """
     iface = ICustomStudentOnlinePayment
+
+class CustomStudentStudyLevelProcessor(StudentStudyLevelProcessor):
+    """
+    """
+    iface = ICustomStudentStudyLevel
+
+    @property
+    def available_fields(self):
+        fields = super(CustomStudentStudyLevelProcessor, self).available_fields
+        fields.remove('total_credits_s1')
+        fields.remove('total_credits_s2')
+        return  fields
Index: main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/browser.py
===================================================================
--- main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/browser.py	(revision 16815)
+++ main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/browser.py	(revision 16817)
@@ -26,5 +26,5 @@
     KofaEditFormPage, UtilityView, action, jsaction)
 from waeup.kofa.students.browser import (
-    StudyLevelEditFormPage, StudyLevelDisplayFormPage,
+    StudyLevelEditFormPage, StudyLevelDisplayFormPage, StudyLevelManageFormPage,
     StudentBasePDFFormPage, ExportPDFCourseRegistrationSlip,
     CourseTicketDisplayFormPage, StudentTriggerTransitionFormPage,
@@ -80,4 +80,9 @@
     """
     grok.template('studylevelpage')
+    grok.context(ICustomStudentStudyLevel)
+    form_fields = grok.AutoFields(ICustomStudentStudyLevel).omit(
+        'level',)
+    form_fields[
+        'validation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
 
 class CustomStudyLevelEditFormPage(StudyLevelEditFormPage):
@@ -92,7 +97,26 @@
     form_fields = grok.AutoFields(ICourseTicket).omit('score')
 
+class CustomStudyLevelManageFormPage(StudyLevelManageFormPage):
+    """ Page to edit the student study level data
+    """
+    grok.context(ICustomStudentStudyLevel)
+
+    form_fields = grok.AutoFields(ICustomStudentStudyLevel).omit(
+        'validation_date', 'validated_by', 'total_credits', 'gpa', 'level',
+        'total_credits_s1', 'total_credits_s2')
+
 class CustomExportPDFCourseRegistrationSlip(ExportPDFCourseRegistrationSlip):
     """Deliver a PDF slip of the context.
     """
+    grok.context(ICustomStudentStudyLevel)
+    form_fields = grok.AutoFields(ICustomStudentStudyLevel).omit(
+        'level', 'gpa', 'transcript_remark')
+    form_fields[
+        'validation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
+    prefix = 'form'
+    omit_fields = (
+        'password', 'suspended', 'phone', 'date_of_birth',
+        'adm_code', 'sex', 'suspended_comment', 'current_level',
+        'flash_notice')
 
     def render(self):
Index: main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/interfaces.py
===================================================================
--- main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/interfaces.py	(revision 16815)
+++ main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/interfaces.py	(revision 16817)
@@ -65,4 +65,19 @@
     """
 
+    total_credits_s1 = schema.Int(
+        title = _(u'1st Semester Credits'),
+        required = False,
+        )
+
+    total_credits_s2 = schema.Int(
+        title = _(u'2nd Semester Credits'),
+        required = False,
+        )
+
+    total_credits = schema.Int(
+        title = _(u'Total Credits'),
+        required = False,
+        )
+
 class ICustomStudentOnlinePayment(ICustomOnlinePayment):
     """A student payment via payment gateways.
Index: main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/studylevel.py
===================================================================
--- main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/studylevel.py	(revision 16815)
+++ main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/studylevel.py	(revision 16817)
@@ -39,4 +39,20 @@
 
     @property
+    def total_credits_s1(self):
+        total = 0
+        for ticket in self.values():
+            if ticket.semester == 1 and not ticket.outstanding:
+                total += ticket.credits
+        return total
+
+    @property
+    def total_credits_s2(self):
+        total = 0
+        for ticket in self.values():
+            if ticket.semester == 2 and not ticket.outstanding:
+                total += ticket.credits
+        return total
+
+    @property
     def gpa_params(self):
         """Calculate gpa parameters for this level.
@@ -60,5 +76,6 @@
 
 CustomStudentStudyLevel = attrs_to_fields(
-    CustomStudentStudyLevel, omit=['total_credits', 'gpa'])
+    CustomStudentStudyLevel, omit=['total_credits', 'gpa',
+        'total_credits_s1', 'total_credits_s2'])
 
 class CustomStudentStudyLevelFactory(StudentStudyLevelFactory):
