Index: main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/transcript.pt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/transcript.pt	(revision 14373)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/transcript.pt	(revision 14382)
@@ -21,5 +21,5 @@
       </td>
       <td>
-        <div tal:content="python:tdata[1]">GPA</div>
+        <div tal:content="python:'%.3f' % tdata[1]">GPA</div>
       </td>
     </tr>
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/reports/level_report.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/reports/level_report.py	(revision 14373)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/reports/level_report.py	(revision 14382)
@@ -71,9 +71,9 @@
                 passed_params[2],
                 passed_params[5],
-                level_obj.gpa,
+                '%.2f' % (int(100*level_obj.gpa)/100.0),
                 failed_courses,
                 level_obj.cumulative_params[1],
                 level_obj.cumulative_params[4],
-                level_obj.cumulative_params[0],
+                '%.3f' % (int(1000*level_obj.cumulative_params[0])/1000.0),
                 remark,
                 )
@@ -115,5 +115,5 @@
             'S/N',
             'Matric No.',
-            'Name',
+            translate(_('Student Name')),
             TTR(translate(_('Total Credits Taken'))),
             TTR(translate(_('Total Credits Passed'))),
@@ -197,9 +197,10 @@
         pdf_data += [Paragraph(
                     translate(
-                        '${a}<br />${b}<br />Level: ${c}<br />Session: ${d}',
+                        '${a}<br />${b}<br />Session: ${c}<br />Level: ${d}',
                         mapping = {'a':self.factitle,
                                    'b':self.deptitle,
-                                   'c':self.level,
-                                   'd':self.session, }),
+                                   'c':self.session,
+                                   'd':self.level,
+                                   }),
                     STYLE["Normal"]),
                     Spacer(1, 12),]
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/reports/session_results_presentation.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/reports/session_results_presentation.py	(revision 14373)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/reports/session_results_presentation.py	(revision 14382)
@@ -150,6 +150,6 @@
                               STYLE["Normal"]),
                     Spacer(1, 12),]
-        pdf_data += [Paragraph('%s<br />%s<br />Level: %s<br />Session: %s' % (
-                    self.factitle, self.deptitle, self.level, self.session),
+        pdf_data += [Paragraph('%s<br />%s<br />Session: %s<br />Level: %s' % (
+                    self.factitle, self.deptitle, self.session, self.level),
                     STYLE["Normal"]),
                     Spacer(1, 12),]
@@ -175,10 +175,13 @@
         pdf_data += [Paragraph('<strong>Summary</strong>', STYLE["Normal"])]
         pdf_data.append(Spacer(1, 10))
+        total_count = 0
         for gpa_class in range(len(students_utils.gpa_boundaries)-1,-1,-1):
             gpa_class_name = students_utils.gpa_boundaries[gpa_class][1]
             gpa_count = len(self.data[gpa_class])
+            total_count += gpa_count
             pdf_data += [Paragraph('%s: %s'
                          % (gpa_class_name, gpa_count), STYLE["Normal"])]
             pass
+        pdf_data += [Paragraph('Total: %s' % (total_count), STYLE["Normal"])]
 
         doc_title = translate(_('Presentation of Session Results'))
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/reports/tests/test_level_report.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/reports/tests/test_level_report.py	(revision 14373)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/reports/tests/test_level_report.py	(revision 14382)
@@ -41,6 +41,6 @@
         result = get_students('fac1', 'dep1', 2010, 100)
         self.assertEqual(result,
-            [(u'1234', u'Bob Tester', 90, 30, 0, 1.667, 'm_Course2_m Course3',
-              90, 30, 1.667, '')])
+            [(u'1234', u'Bob Tester', 90, 30, 0, '1.66',
+            'm_Course2_m Course3', 90, 30, '1.666', '')])
         return
 
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/studycourse.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/studycourse.py	(revision 14373)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/studycourse.py	(revision 14382)
@@ -120,7 +120,4 @@
         return
 
-    def _display_gpa(self, gpa):
-        return round(gpa, 2)
-
     def getTranscriptData(self):
         """Get a sorted list of dicts with level and course ticket data.
@@ -155,5 +152,5 @@
                      sgpa=sgpa))
         if total_credits_counted:
-            cgpa = self._display_gpa(cgpa/total_credits_counted)
+            cgpa = cgpa/total_credits_counted
         # Override cgpa if value has been imported
         # (not implemented in base package)
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/studylevel.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/studylevel.py	(revision 14373)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/studylevel.py	(revision 14382)
@@ -108,7 +108,4 @@
         return session_string
 
-    def _display_gpa(self, gpa):
-        return round(gpa, 3)
-
     @property
     def gpa_params_rectified(self):
@@ -130,5 +127,5 @@
                 credits_weighted += ticket.credits * ticket.weight
         if credits_counted:
-            level_gpa = self._display_gpa(credits_weighted/credits_counted)
+            level_gpa = credits_weighted/credits_counted
         return level_gpa, credits_counted, credits_weighted
 
@@ -145,5 +142,5 @@
                 credits_weighted += ticket.credits * ticket.weight
         if credits_counted:
-            level_gpa = self._display_gpa(credits_weighted/credits_counted)
+            level_gpa = credits_weighted/credits_counted
         # Override level_gpa if value has been imported
         # (not implemented in base package)
@@ -210,5 +207,5 @@
                 total_credits_weighted += gpa_params[2]
             if total_credits_counted:
-                cgpa = self._display_gpa(total_credits_weighted/total_credits_counted)
+                cgpa = total_credits_weighted/total_credits_counted
             # Override cgpa if value has been imported
             # (not implemented in base package)
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 14373)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 14382)
@@ -874,5 +874,6 @@
         # sgpa = 82 / 23
         self.assertEqual(
-            self.student['studycourse']['100'].gpa_params_rectified[0], 3.565)
+            self.student['studycourse']['100'].gpa_params_rectified[0],
+            3.5652173913043477)
         # Carry-over courses will be collected when next level is created
         self.browser.open(self.student_path + '/studycourse/manage')
@@ -903,10 +904,10 @@
         self.assertEqual(
             self.student['studycourse']['100'].cumulative_params,
-            (2.261, 23, 52.0, 23, 13))
+            (2.260869565217391, 23, 52.0, 23, 13))
         # COURSE1 in level 200 is not taken into consideration
         # when calculating the gpa.
         self.assertEqual(
             self.student['studycourse']['200'].cumulative_params,
-            (2.261, 23, 52.0, 33, 13))
+            (2.260869565217391, 23, 52.0, 33, 13))
         return
 
@@ -2103,5 +2104,5 @@
         self.assertEqual(td[0][1]['level'].level_session, 2006)
         self.assertEqual(td[0][1]['tickets_1'][0].code, 'ANYCODE')
-        self.assertEqual(td[1], 3.57)
+        self.assertEqual(td[1], 3.5652173913043477)
         self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
         self.browser.open(self.student_path + '/studycourse/transcript')
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 14373)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 14382)
@@ -282,5 +282,5 @@
             element[2]*cm for element in tableheader], style=CONTENT_STYLE)
         data.append(table)
-        sgpa = '%s: %s' % (trans('Sessional GPA (rectified)', lang), level['sgpa'])
+        sgpa = '%s: %.2f' % (trans('Sessional GPA (rectified)', lang), level['sgpa'])
         data.append(Paragraph(sgpa, style["Normal"]))
     return data
@@ -882,5 +882,4 @@
         transcript_data = view.context.getTranscriptData()
         levels_data = transcript_data[0]
-        gpa = transcript_data[1]
 
         contextdata = []
@@ -921,5 +920,6 @@
         f_label = trans(_('Cumulative GPA:'), portal_language)
         f_label = Paragraph(f_label, ENTRY1_STYLE)
-        f_text = formatted_text('%s (%s)' % (gpa, self.getClassFromCGPA(gpa)[1]))
+        f_text = formatted_text('%.3f (%s)' % (
+            transcript_data[1], self.getClassFromCGPA(transcript_data[1])[1]))
         f_text = Paragraph(f_text, ENTRY1_STYLE)
         contextdata.append([f_label,f_text])
