Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/mytranscriptrequests.pt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/mytranscriptrequests.pt	(revision 17458)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/mytranscriptrequests.pt	(revision 17497)
@@ -10,4 +10,6 @@
     <th i18n:translate="">Full Name</th>
     <th i18n:translate="">Course Studied</th>
+    <th i18n:translate="">End Session</th>
+    <th i18n:translate="">Entry Mode</th>
     <th i18n:translate="">Submission Date</th>
   </tr>
@@ -22,6 +24,8 @@
     </td>
     <td tal:content="python:item[0].display_fullname">Bob</td>
-    <td tal:content="python:getattr(item[0].course_studied,'title',None)">Bob</td>
-    <td tal:content="python:item[1]">Bob</td>
+    <td tal:content="python:getattr(item[0].course_studied,'title',None)">CERT</td>
+    <td tal:content="python:getattr(item[0],'end_session',None)">2012</td>
+    <td tal:content="python:getattr(item[0],'entry_mode',None)">UG</td>
+    <td tal:content="python:item[1]">date</td>
   </tr>
   </tbody>
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 17458)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 17497)
@@ -1602,4 +1602,9 @@
             self.redirect(self.url(self.context))
             return
+        self.tdata = self.context.getTranscriptData()
+        #if not self.tdata[1]:
+        #    self.flash(_('No results yet!'), type="warning")
+        #    self.redirect(self.url(self.context))
+        #    return
         super(StudyCourseTranscriptPage, self).update()
         self.semester_dict = getUtility(IKofaUtils).SEMESTER_DICT
@@ -1636,4 +1641,9 @@
             self.redirect(self.url(self.context))
             return
+        tdata = self.context.getTranscriptData()
+        #if not tdata[1]:
+        #    self.flash(_('No results yet!'), type="warning")
+        #    self.redirect(self.url(self.context))
+        #    return
         super(ExportPDFTranscriptSlip, self).update()
         self.semester_dict = getUtility(IKofaUtils).SEMESTER_DICT
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 17458)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/transcript.pt	(revision 17497)
@@ -1,3 +1,2 @@
-<tal:def define="tdata python:context.getTranscriptData()">
 <table class="form-table" i18n:domain="waeup.kofa">
   <thead>
@@ -16,10 +15,10 @@
       </tr>
     </tal:block>
-    <tr>
+    <tr tal:condition="python:view.tdata[1]">
       <td>
         <span i18n:translate="">Cumulative GPA</span>:
       </td>
       <td>
-        <div tal:content="python:view.format_float(tdata[1], 3)">CGPA</div>
+        <div tal:content="python:view.format_float(view.tdata[1], 3)">CGPA</div>
       </td>
     </tr>
@@ -27,36 +26,42 @@
 </table>
 
-<h3 i18n:domain="waeup.kofa" i18n:translate="">Subjects/Courses</h3>
+<tal:block condition=python:view.tdata[1]>
+  <h3 i18n:domain="waeup.kofa" i18n:translate="">Subjects/Courses</h3>
+  <table i18n:domain="waeup.kofa" class="form-table" >
+    <thead>
+      <tr>
+        <th i18n:translate="">Level</th>
+        <th i18n:translate="">Session</th>
+        <th i18n:translate="">Term</th>
+        <th i18n:translate="">Course</th>
+        <th i18n:translate="">Title</th>
+        <th i18n:translate="">Credits</th>
+        <th i18n:translate="">Grade</th>
+      </tr>
+    </thead>
+    <tbody>
+      <tal:levels tal:repeat="level python:view.tdata[0]">
+        <tal:semesters tal:repeat="semester_tickets python:(level['tickets_1'],
+                                        level['tickets_2'], level['tickets_3'])">
+        <tr tal:repeat="ticket semester_tickets">
+          <td tal:content="python: view.level_dict.get('ticket.level', ticket.level)">LEVEL</td>
+          <td tal:content="python: view.session_dict[ticket.level_session]">SESSION</td>
+          <td tal:content="python: view.semester_dict[ticket.semester]">SEMESTER</td>
+          <td tal:content="ticket/code">CODE</td>
+          <td tal:content="ticket/title">TITLE</td>
+          <td tal:content="ticket/credits">CREDITS</td>
+          <td tal:content="ticket/grade|nothing">GRADE</td>
+        </tr>
+        </tal:semesters>
+      </tal:levels>
+    </tbody>
+  </table>
+  <br />
+</tal:block>
 
-<table i18n:domain="waeup.kofa" class="form-table" >
-  <thead>
-    <tr>
-      <th i18n:translate="">Level</th>
-      <th i18n:translate="">Session</th>
-      <th i18n:translate="">Term</th>
-      <th i18n:translate="">Course</th>
-      <th i18n:translate="">Title</th>
-      <th i18n:translate="">Credits</th>
-      <th i18n:translate="">Grade</th>
-    </tr>
-  </thead>
-  <tbody>
-    <tal:levels tal:repeat="level python:tdata[0]">
-      <tal:semesters tal:repeat="semester_tickets python:(level['tickets_1'],
-                                      level['tickets_2'], level['tickets_3'])">
-      <tr tal:repeat="ticket semester_tickets">
-        <td tal:content="python: view.level_dict.get('ticket.level', ticket.level)">LEVEL</td>
-        <td tal:content="python: view.session_dict[ticket.level_session]">SESSION</td>
-        <td tal:content="python: view.semester_dict[ticket.semester]">SEMESTER</td>
-        <td tal:content="ticket/code">CODE</td>
-        <td tal:content="ticket/title">TITLE</td>
-        <td tal:content="ticket/credits">CREDITS</td>
-        <td tal:content="ticket/grade|nothing">GRADE</td>
-      </tr>
-      </tal:semesters>
-    </tal:levels>
-  </tbody>
-</table>
-<br />
 <div tal:content="python:getattr(context, 'transcript_signees', '')">SIGNEES</div>
-</tal:def>
+
+<p tal:condition="not: python:view.tdata[1]">
+  <br />
+  <strong>No results yet!</strong>
+</p>
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 17458)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 17497)
@@ -1089,4 +1089,6 @@
         else:
             f_text = formatted_text('%s' % cgpa)
+            if not transcript_data[1]:
+                f_text = formatted_text('No results yet!')
         f_text = Paragraph(f_text, ENTRY1_STYLE)
         contextdata.append([f_label,f_text])
@@ -1095,7 +1097,8 @@
         data.append(contexttable)
 
-        transcripttables = render_transcript_data(
-            view, tableheader, levels_data, lang=portal_language)
-        data.extend(transcripttables)
+        if transcript_data[1]:
+            transcripttables = render_transcript_data(
+                view, tableheader, levels_data, lang=portal_language)
+            data.extend(transcripttables)
 
         # Insert signatures
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/export.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/export.py	(revision 17458)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/export.py	(revision 17497)
@@ -123,6 +123,6 @@
 
     def mangle_value(self, value, name, context=None):
-        """The mangler additionally computes the department_code value
-        which is the code of the department that offers the course.
+        """The mangler additionally computes the department_code
+        and faculty_code values.
         """
         if name == 'users_with_local_roles':
@@ -166,5 +166,5 @@
 
     fields = ('code', 'faculty_code', 'department_code', 'title', 'study_mode',
-              'degree','key',
+              'degree',
               'start_level', 'end_level', 'application_category', 'ratio',
               'school_fee_1', 'school_fee_2', 'school_fee_3', 'school_fee_4',
@@ -174,13 +174,4 @@
 
     title = _(u'Certificates')
-
-    def mangle_value(self, value, name, context=None):
-        """The mangler additionally computes the department_code value
-        which is the code of the department that offers the certificate.
-        """
-        if name == 'key':
-            value = context.__name__
-        return super(CertificateExporter, self).mangle_value(
-            value, name, context)
 
     def export_all(self, site, filepath=None):
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_export.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_export.py	(revision 17458)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_export.py	(revision 17497)
@@ -400,5 +400,5 @@
             result,
             'code,faculty_code,department_code,title,study_mode,'
-            'degree,key,start_level,'
+            'degree,start_level,'
             'end_level,application_category,ratio,school_fee_1,'
             'school_fee_2,school_fee_3,school_fee_4,'
@@ -406,5 +406,5 @@
             'custom_float_1,custom_float_2,'
             'users_with_local_roles\r\n'
-            'CERT1,F1,D1,Master of Cheese,ct_ft,,CERT1,100,300,basic,,,,,,,,,,'
+            'CERT1,F1,D1,Master of Cheese,ct_ft,,100,300,basic,,,,,,,,,,'
             '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]"\r\n'
             )
@@ -418,5 +418,5 @@
             result,
             'code,faculty_code,department_code,title,study_mode,'
-            'degree,key,start_level,'
+            'degree,start_level,'
             'end_level,application_category,ratio,school_fee_1,'
             'school_fee_2,school_fee_3,school_fee_4,'
@@ -424,7 +424,7 @@
             'custom_float_1,custom_float_2,'
             'users_with_local_roles\r\n'
-            'CERT1,F1,D1,Master of Cheese,ct_ft,,CERT1,100,300,basic,,,,,,,,,,'
+            'CERT1,F1,D1,Master of Cheese,ct_ft,,100,300,basic,,,,,,,,,,'
             '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]"\r\n'
-            'CERT2,F1,D1,Master of Cheddar,ct_ft,,CERT2,400,700,cest,,,,,,,,,,[]\r\n'
+            'CERT2,F1,D1,Master of Cheddar,ct_ft,,400,700,cest,,,,,,,,,,[]\r\n'
             )
         return
@@ -438,5 +438,5 @@
             result,
             'code,faculty_code,department_code,title,study_mode,'
-            'degree,key,start_level,'
+            'degree,start_level,'
             'end_level,application_category,ratio,'
             'school_fee_1,school_fee_2,school_fee_3,school_fee_4,'
@@ -444,8 +444,8 @@
             'custom_float_1,custom_float_2,'
             'users_with_local_roles\r\n'
-            'CERT1,F1,D1,Master of Cheese,ct_ft,,CERT1,100,300,basic,,,,,,,,,,'
+            'CERT1,F1,D1,Master of Cheese,ct_ft,,100,300,basic,,,,,,,,,,'
             '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]"\r\n'
-            'CERT2,F1,D1,Master of Cheddar,ct_ft,,CERT2,400,700,cest,,,,,,,,,,[]\r\n'
-            'CERT3,F1,D2,Cert. of Rubbish,dp_pt,,CERT3,100,200,no,,,,,,,,,,[]\r\n'
+            'CERT2,F1,D1,Master of Cheddar,ct_ft,,400,700,cest,,,,,,,,,,[]\r\n'
+            'CERT3,F1,D2,Cert. of Rubbish,dp_pt,,100,200,no,,,,,,,,,,[]\r\n'
             )
         return
@@ -458,5 +458,5 @@
             result,
             'code,faculty_code,department_code,title,study_mode,'
-            'degree,key,start_level,'
+            'degree,start_level,'
             'end_level,application_category,ratio,'
             'school_fee_1,school_fee_2,school_fee_3,school_fee_4,'
@@ -464,8 +464,8 @@
             'custom_float_1,custom_float_2,'
             'users_with_local_roles\r\n'
-            'CERT1,F1,D1,Master of Cheese,ct_ft,,CERT1,100,300,basic,,,,,,,,,,'
+            'CERT1,F1,D1,Master of Cheese,ct_ft,,100,300,basic,,,,,,,,,,'
             '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]"\r\n'
-            'CERT2,F1,D1,Master of Cheddar,ct_ft,,CERT2,400,700,cest,,,,,,,,,,[]\r\n'
-            'CERT3,F1,D2,Cert. of Rubbish,dp_pt,,CERT3,100,200,no,,,,,,,,,,[]\r\n'
+            'CERT2,F1,D1,Master of Cheddar,ct_ft,,400,700,cest,,,,,,,,,,[]\r\n'
+            'CERT3,F1,D2,Cert. of Rubbish,dp_pt,,100,200,no,,,,,,,,,,[]\r\n'
             )
         return
