Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 15116)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 15163)
@@ -60,5 +60,7 @@
     ISessionConfiguration, ISessionConfigurationAdd, IJobManager,
     IPasswordValidator, IContactForm, IKofaUtils, ICSVExporter,
-    academic_sessions_vocab, DOCLINK, registration_states_vocab)
+    academic_sessions_vocab, DOCLINK, registration_states_vocab,
+    TRANSREQ, TRANSVAL)
+from waeup.kofa.university.faculty import Faculty
 from waeup.kofa.university.department import Department
 from waeup.kofa.university.course import Course
@@ -375,8 +377,14 @@
                     self.redirect(self.application_url() + rel_link)
                     return
-                # Redirect lecturer after login
+                # Redirect some officers after login
                 local_roles = get_user_account(self.request).getLocalRoles()
                 if local_roles.has_key('waeup.local.Lecturer'):
                     self.redirect(self.application_url() + '/my_courses')
+                    return
+                if local_roles.has_key('waeup.local.TranscriptOfficer'):
+                    self.redirect(self.application_url() + '/my_transcript_requests')
+                    return
+                if local_roles.has_key('waeup.local.TranscriptSignee'):
+                    self.redirect(self.application_url() + '/my_transcript_signing_requests')
                     return
                 if not self.camefrom:
@@ -1023,4 +1031,56 @@
         return courses
 
+class TranscriptOfficerLandingPage(KofaPage):
+    """Display students, who requested a transcript, when
+    transcript officer logs in.
+    """
+    grok.name('my_transcript_requests')
+    grok.require('waeup.Authenticated')
+    grok.context(IUniversity)
+    grok.template('mytranscriptrequests')
+    label =_('My ToDoList')
+
+    @property
+    def getStudents(self):
+        students = ([],[])
+        cat = queryUtility(ICatalog, name='students_catalog')
+        local_roles = get_user_account(self.request).getLocalRoles()
+        for item in local_roles.get('waeup.local.TranscriptOfficer', []):
+            if isinstance(item, Faculty):
+                faccode = item.code
+                results1 = cat.searchResults(
+                    state=(TRANSREQ, TRANSREQ), faccode=(faccode, faccode))
+                for result in results1:
+                    students[0].append(StudentQueryResultItem(result, self))
+                results2 = cat.searchResults(
+                    state=(TRANSVAL, TRANSVAL), faccode=(faccode, faccode))
+                for result in results2:
+                    students[1].append(StudentQueryResultItem(result, self))
+        return students
+
+class TranscriptSigneeLandingPage(KofaPage):
+    """Display students with validated transcript requests, when
+    transcript signee logs in.
+    """
+    grok.name('my_transcript_signing_requests')
+    grok.require('waeup.Authenticated')
+    grok.context(IUniversity)
+    grok.template('mytranscriptrequests')
+    label =_('My ToDoList')
+
+    @property
+    def getStudents(self):
+        students = ([],[])
+        cat = queryUtility(ICatalog, name='students_catalog')
+        local_roles = get_user_account(self.request).getLocalRoles()
+        for item in local_roles.get('waeup.local.TranscriptSignee', []):
+            if isinstance(item, Faculty):
+                faccode = item.code
+                results = cat.searchResults(
+                    state=(TRANSVAL, TRANSVAL), faccode=(faccode, faccode))
+                for result in results:
+                    students[1].append(StudentQueryResultItem(result, self))
+        return students
+
 #
 # Search pages...
Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/mytranscriptrequests.pt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/mytranscriptrequests.pt	(revision 15163)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/mytranscriptrequests.pt	(revision 15163)
@@ -0,0 +1,61 @@
+<h3 i18n:domain="waeup.kofa" i18n:translate="" tal:condition="python:view.getStudents[0]">
+  Transcripts to be validated
+</h3>
+
+<table class="kofa-data-table dataTable" tal:condition="python:view.getStudents[0]">
+  <thead>
+  <tr>
+    <th i18n:translate="">Matric No.</th>
+    <th i18n:translate="">Student Id</th>
+    <th i18n:translate="">Fullname</th>
+    <th i18n:translate="">Faculty</th>
+    <th i18n:translate="">Department</th>
+    <th i18n:translate="">Course of Studies</th>
+  </tr>
+  </thead>
+  <tbody>
+  <tr tal:repeat="student python:view.getStudents[0]">
+    <td tal:content="student/context/matric_number">MATRICNUMBER</td>
+    <td>
+      <a tal:attributes="href python:student.url + '/studycourse/transcript'">
+      <span tal:content="student/student_id">STUDENTID</span>
+      </a>
+    </td>
+    <td tal:content="student/context/display_fullname">FULLNAME</td>
+    <td tal:content="student/context/faccode">FACCODE</td>
+    <td tal:content="student/context/depcode">DEPCODE</td>
+    <td tal:content="student/context/certcode">CERTCODE</td>
+  </tr>
+  </tbody>
+</table>
+
+<h3 i18n:domain="waeup.kofa" i18n:translate="" tal:condition="python:view.getStudents[1]">
+  Transcripts to be signed and released
+</h3>
+
+<table class="kofa-data-table dataTable" tal:condition="python:view.getStudents[1]">
+  <thead>
+  <tr>
+    <th i18n:translate="">Matric No.</th>
+    <th i18n:translate="">Student Id</th>
+    <th i18n:translate="">Fullname</th>
+    <th i18n:translate="">Faculty</th>
+    <th i18n:translate="">Department</th>
+    <th i18n:translate="">Course of Studies</th>
+  </tr>
+  </thead>
+  <tbody>
+  <tr tal:repeat="student python:view.getStudents[1]">
+    <td tal:content="student/context/matric_number">MATRICNUMBER</td>
+    <td>
+      <a tal:attributes="href python:student.url + '/studycourse/transcript'">
+      <span tal:content="student/student_id">STUDENTID</span>
+      </a>
+    </td>
+    <td tal:content="student/context/display_fullname">FULLNAME</td>
+    <td tal:content="student/context/faccode">FACCODE</td>
+    <td tal:content="student/context/depcode">DEPCODE</td>
+    <td tal:content="student/context/certcode">CERTCODE</td>
+  </tr>
+  </tbody>
+</table>
Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/tests/test_browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/tests/test_browser.py	(revision 15116)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/tests/test_browser.py	(revision 15163)
@@ -439,5 +439,4 @@
             'nationality,officer_comment,perm_address,personal_updated,'
             'phone,reg_number,sex,student_id,suspended,suspended_comment,'
-            'transcript_comment,'
             'password,state,history,certcode,is_postgrad,current_level,'
             'current_session\r\n')
Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/viewlets.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/viewlets.py	(revision 15116)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/viewlets.py	(revision 15163)
@@ -365,4 +365,42 @@
         return ''
 
+class TranscriptOfficerStudents(ManageLink):
+    """A link to transcript requests.
+    """
+    grok.order(6)
+    grok.require('waeup.Authenticated')
+
+    link = u'my_transcript_requests'
+    text = _(u'My ToDoList')
+
+    def render(self):
+        user_account = get_user_account(self.request)
+        if user_account:
+            local_roles = user_account.getLocalRoles()
+            if local_roles.has_key('waeup.local.TranscriptOfficer'):
+                url = self.view.url(grok.getSite(), self.link)
+                text = translate(self.text, context=self.request)
+                return u'<li><a href="%s">%s</a></li>' % (url, text)
+        return ''
+
+class TranscriptSigneeStudents(ManageLink):
+    """A link to transcript signing requests.
+    """
+    grok.order(6)
+    grok.require('waeup.Authenticated')
+
+    link = u'my_transcript_signing_requests'
+    text = _(u'My ToDoList')
+
+    def render(self):
+        user_account = get_user_account(self.request)
+        if user_account:
+            local_roles = user_account.getLocalRoles()
+            if local_roles.has_key('waeup.local.TranscriptSignee'):
+                url = self.view.url(grok.getSite(), self.link)
+                text = translate(self.text, context=self.request)
+                return u'<li><a href="%s">%s</a></li>' % (url, text)
+        return ''
+
 class MyPreferences(ManageLink):
     """A link to personal preferences, placed in upper left box.
