Index: /main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py	(revision 16057)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py	(revision 16058)
@@ -862,5 +862,5 @@
     form_fields['creation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
     form_fields['payment_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
-    prefix = 'form'
+    #prefix = 'form'
     note = None
 
@@ -903,5 +903,5 @@
     grok.name('application_slip.pdf')
     grok.require('waeup.viewApplication')
-    prefix = 'form'
+    #prefix = 'form'
 
     def update(self):
@@ -1289,5 +1289,5 @@
             if referee.email_sent:
                 continue
-            mandate = RefereeReportMandate()
+            mandate = RefereeReportMandate(days=7)
             mandate.params['name'] = referee.name
             mandate.params['email'] = referee.email
@@ -1682,4 +1682,7 @@
     label = _('Referee Report')
     pnav = 3
+    form_fields = grok.AutoFields(IApplicantRefereeReport)
+    form_fields[
+        'creation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
 
 class RefereeReportAddFormPage(KofaAddFormPage):
@@ -1714,5 +1717,12 @@
             self.redirect(self.application_url())
             return
+        self.passport_url = self.url(self.context, 'passport.jpg')
         if mandate:
+            # Check the mandate expiration date after redirect again
+            if mandate.expires < datetime.utcnow():
+                self.flash(_('Mandate expired.'),
+                           type='warning')
+                self.redirect(self.application_url())
+                return
             # Prefill form with mandate params
             self.form_fields.get(
@@ -1741,4 +1751,36 @@
         return
 
+class ExportPDFReportSlipPage(UtilityView, grok.View):
+    """Deliver a PDF slip of the context.
+    """
+    grok.context(IApplicantRefereeReport)
+    grok.name('referee_report_slip.pdf')
+    grok.require('waeup.manageApplication')
+    form_fields = grok.AutoFields(IApplicantRefereeReport)
+    form_fields[
+        'creation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
+    #prefix = 'form'
+    note = None
+
+    @property
+    def title(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+        return translate(_('Referee Report'), 'waeup.kofa',
+            target_language=portal_language)
+
+    @property
+    def label(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+        return translate(_('Referee Report Slip'),
+            'waeup.kofa', target_language=portal_language) \
+            + ' %s' % self.context.r_id
+
+    def render(self):
+        applicantview = ApplicantBaseDisplayFormPage(self.context.__parent__,
+            self.request)
+        students_utils = getUtility(IStudentsUtils)
+        return students_utils.renderPDF(self,'referee_report_slip.pdf',
+            self.context.__parent__, applicantview, note=self.note)
+
 class AdditionalFile(grok.View):
     """Renders additional pdf files for applicants.
Index: /main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser_templates/refereereportpage.pt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser_templates/refereereportpage.pt	(revision 16057)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser_templates/refereereportpage.pt	(revision 16058)
@@ -14,7 +14,15 @@
   </strong>
   of the <span i18n:name="app_title" tal:replace="layout/getAppTitle"></span>.
+  
   <br /><br />
-  Please fill and submit the following form. After submission the form will
-  be locked. You can neither view nor edit your report after submission.
+
+  <img tal:condition="python: context.__parent__.with_picture"
+       src="" height="180px" tal:attributes="src view/passport_url" />
+
+  <br /><br />
+
+  Please fill and submit the following referee report form. After submission
+  the form will be locked. You can neither view nor edit
+  your report after submission.
 </p>
 
Index: /main/waeup.kofa/trunk/src/waeup/kofa/applicants/interfaces.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/applicants/interfaces.py	(revision 16057)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/applicants/interfaces.py	(revision 16058)
@@ -668,5 +668,5 @@
 
     creation_date = schema.Datetime(
-        title = _(u'Ticket Creation Date'),
+        title = _(u'Report Creation Date'),
         readonly = False,
         required = False,
@@ -674,10 +674,10 @@
 
     name = schema.TextLine(
-        title = _(u'Name'),
+        title = _(u'Referee Name'),
         required = True,
         )
 
     email = schema.ASCIILine(
-        title = _(u'Email Address'),
+        title = _(u'Referee Email Address'),
         required = True,
         constraint=validate_email,
@@ -685,5 +685,5 @@
 
     phone = PhoneNumber(
-        title = _(u'Phone'),
+        title = _(u'Referee Phone'),
         description = u'',
         required = False,
Index: /main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py	(revision 16057)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py	(revision 16058)
@@ -38,4 +38,5 @@
 from zope.testbrowser.testing import Browser
 from hurry.workflow.interfaces import IWorkflowInfo, IWorkflowState
+from waeup.kofa.browser.tests.test_pdf import samples_dir
 from waeup.kofa.testing import FunctionalLayer, FunctionalTestCase
 from waeup.kofa.app import University
@@ -1723,4 +1724,12 @@
             self.browser.url, self.view_path  + '/%s' % report.r_id)
         self.assertTrue('John Referee' in self.browser.contents)
+        # Managers can download a pdf slip
+        self.browser.getLink("Download report").click()
+        self.assertEqual(self.browser.headers['Status'], '200 Ok')
+        self.assertEqual(self.browser.headers['Content-Type'],
+                         'application/pdf')
+        path = os.path.join(samples_dir(), 'referee_report_slip.pdf')
+        open(path, 'wb').write(self.browser.contents)
+        print "Sample PDF referee_report_slip.pdf written to %s" % path
         # Report creation is logged
         logfile = os.path.join(
Index: /main/waeup.kofa/trunk/src/waeup/kofa/applicants/viewlets.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/applicants/viewlets.py	(revision 16057)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/applicants/viewlets.py	(revision 16058)
@@ -23,10 +23,11 @@
 from waeup.kofa.applicants.interfaces import (
     IApplicant, IApplicantsRoot, IApplicantsContainer,
-    IApplicantOnlinePayment
+    IApplicantOnlinePayment, IApplicantRefereeReport
     )
 from waeup.kofa.applicants.browser import (
     ApplicantsRootPage, ApplicantsContainerPage, ApplicantManageFormPage,
     ApplicantDisplayFormPage, OnlinePaymentDisplayFormPage,
-    ApplicantsContainerManageFormPage, ApplicantsStatisticsPage
+    ApplicantsContainerManageFormPage, ApplicantsStatisticsPage,
+    RefereeReportDisplayFormPage
     )
 
@@ -285,4 +286,17 @@
         return self.view.url(self.view.context, self.target)
 
+class ReportSlipActionButton(ManageActionButton):
+    grok.order(1) 
+    grok.context(IApplicantRefereeReport)
+    grok.view(RefereeReportDisplayFormPage)
+    grok.require('waeup.manageApplication')
+    icon = 'actionicon_pdf.png'
+    text = _('Download report slip')
+    target = 'referee_report_slip.pdf'
+
+    @property
+    def target_url(self):
+        return self.view.url(self.view.context, self.target)
+
 class ApprovePaymentActionButton(ManageActionButton):
     grok.order(8)
