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 15156)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/pages.py	(revision 15157)
@@ -1059,4 +1059,28 @@
         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/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 15156)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/templates/mytranscriptrequests.pt	(revision 15157)
@@ -1,4 +1,4 @@
 <h3 i18n:domain="waeup.kofa" i18n:translate="" tal:condition="python:view.getStudents[0]">
-  Transcript requested
+  Transcripts to be validated
 </h3>
 <div tal:repeat="student python:view.getStudents[0]">
@@ -8,5 +8,5 @@
 </div>
 <h3 i18n:domain="waeup.kofa" i18n:translate="" tal:condition="python:view.getStudents[1]">
-  Transcript validated
+  Transcripts to be signed and released
 </h3>
 <div tal:repeat="student python:view.getStudents[1]">
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/viewlets.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/viewlets.py	(revision 15156)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/viewlets.py	(revision 15157)
@@ -384,4 +384,23 @@
         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.
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/dynamicroles.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/dynamicroles.py	(revision 15156)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/dynamicroles.py	(revision 15157)
@@ -47,4 +47,5 @@
         'waeup.local.LocalWorkflowManager': 'waeup.WorkflowManager',
         'waeup.local.TranscriptOfficer': 'waeup.TranscriptOfficer',
+        'waeup.local.TranscriptSignee': 'waeup.TranscriptSignee',
         }
 
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 15156)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_browser.py	(revision 15157)
@@ -2268,8 +2268,4 @@
         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')
@@ -2289,5 +2285,30 @@
         self.browser.getControl("Login").click()
         self.assertMatches('...You logged in...', self.browser.contents)
-        # Officer is on landing page
+        # Officer is on landing page and does see the transcript link
+        self.assertTrue(
+            'http://localhost/app/students/K1000000/studycourse/transcript'
+            in self.browser.contents)
+
+    def test_landingpage_transcript_signee(self):
+        IWorkflowState(self.student).setState('transcript validated')
+        notify(grok.ObjectModifiedEvent(self.student))
+        # Create transcript signee
+        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.TranscriptSignee', 'mrtranscript')
+        notify(LocalRoleSetEvent(
+            fac, 'waeup.local.TranscriptSignee', '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 and does see the transcript link
         self.assertTrue(
             'http://localhost/app/students/K1000000/studycourse/transcript'
