Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/pages.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/pages.py	(revision 15153)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/pages.py	(revision 15154)
@@ -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,32 @@
         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 Transcript Requests')
+
+    @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
+
 #
 # Search pages...
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/templates/mytranscriptrequests.pt
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/templates/mytranscriptrequests.pt	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/templates/mytranscriptrequests.pt	(revision 15154)
@@ -0,0 +1,17 @@
+<h3 i18n:domain="waeup.kofa" i18n:translate="" tal:condition="python:view.getStudents[0]">
+  Transcript requested
+</h3>
+<div tal:repeat="student python:view.getStudents[0]">
+  <a tal:attributes="href python:student.url + '/studycourse/transcript'">
+    <span tal:content="student/display_fullname">FULLNAME</span>
+  </a>
+</div>
+<h3 i18n:domain="waeup.kofa" i18n:translate="" tal:condition="python:view.getStudents[1]">
+  Transcript validated
+</h3>
+<div tal:repeat="student python:view.getStudents[1]">
+  <a tal:attributes="href python:student.url + '/studycourse/transcript'">
+    <span tal:content="student/display_fullname">FULLNAME</span>
+  </a>
+</div>
+
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_browser.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_browser.py	(revision 15153)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_browser.py	(revision 15154)
@@ -2267,4 +2267,33 @@
         self.assertEqual(self.student.transcript_signees, None)
 
+    def test_landingpage_transcript_officer(self):
+        IWorkflowState(self.student).setState('transcript requested')
+        notify(grok.ObjectModifiedEvent(self.student))
+        self.student.transcript_comment = (
+            u'On 07/08/2013 08:59:54 UTC K1000000 wrote:\n\nComment line 1 \n'
+            'Comment line2\n\nDispatch Address:\nAddress line 1 \n'
+            'Address line2\n\n')
+        # Create transcript officer
+        self.app['users'].addUser('mrtranscript', 'mrtranscriptsecret')
+        self.app['users']['mrtranscript'].email = 'mrtranscript@foo.ng'
+        self.app['users']['mrtranscript'].title = 'Ruth Gordon'
+        # We assign transcript officer role at faculty level
+        fac = self.app['faculties']['fac1']
+        prmlocal = IPrincipalRoleManager(fac)
+        prmlocal.assignRoleToPrincipal(
+            'waeup.local.TranscriptOfficer', 'mrtranscript')
+        notify(LocalRoleSetEvent(
+            fac, 'waeup.local.TranscriptOfficer', 'mrtranscript', granted=True))
+        # Login as transcript officer
+        self.browser.open(self.login_path)
+        self.browser.getControl(name="form.login").value = 'mrtranscript'
+        self.browser.getControl(name="form.password").value = 'mrtranscriptsecret'
+        self.browser.getControl("Login").click()
+        self.assertMatches('...You logged in...', self.browser.contents)
+        # Officer is on landing page
+        self.assertTrue(
+            'http://localhost/app/students/K1000000/studycourse/transcript'
+            in self.browser.contents)
+
 
 class StudentUITests(StudentsFullSetup):
