Changeset 14661 for main/waeup.aaue


Ignore:
Timestamp:
30 Mar 2017, 07:51:15 (8 years ago)
Author:
Henrik Bettermann
Message:

Implement ExportExaminationScheduleSlip?.

Location:
main/waeup.aaue/trunk/src/waeup/aaue/students
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py

    r14650 r14661  
    126126        'personal_updated'].custom_widget = FriendlyDatetimeDisplayWidget('le')
    127127
     128
     129class ExportExaminationScheduleSlip(UtilityView, grok.View):
     130    """Deliver a examination schedule slip.
     131
     132    This form page is available only in Uniben and AAUE.
     133    """
     134    grok.context(ICustomStudent)
     135    grok.name('examination_schedule_slip.pdf')
     136    grok.require('waeup.viewStudent')
     137    prefix = 'form'
     138
     139    label = u'Examination Schedule Slip'
     140
     141    omit_fields = (
     142        'suspended', 'phone', 'email',
     143        'adm_code', 'suspended_comment',
     144        'date_of_birth', 'current_level',
     145        'current_mode',
     146        'entry_session',
     147        'flash_notice')
     148
     149    form_fields = []
     150
     151    @property
     152    def note(self):
     153        return """
     154<br /><br /><br /><br /><font size='12'>
     155Your examination date, time and venue is scheduled as follows:
     156<br /><br />
     157<strong>%s</strong>
     158</font>
     159
     160""" % self.context.flash_notice
     161        return
     162
     163
     164    def update(self):
     165        if not self.context.flash_notice \
     166            or not 'exam' in self.context.flash_notice.lower():
     167            self.flash(_('Forbidden'), type="warning")
     168            self.redirect(self.url(self.context))
     169
     170    def render(self):
     171        studentview = StudentBasePDFFormPage(self.context.student,
     172            self.request, self.omit_fields)
     173        students_utils = getUtility(IStudentsUtils)
     174        return students_utils.renderPDF(
     175            self, 'examination_schedule_slip',
     176            self.context.student, studentview,
     177            omit_fields=self.omit_fields,
     178            note=self.note)
     179
    128180class CustomStudentClearanceDisplayFormPage(NigeriaStudentClearanceDisplayFormPage):
    129181    """ Page to display student clearance data
  • main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py

    r14613 r14661  
    12401240            '...Successfully added COURSE2...', self.browser.contents)
    12411241        return
     1242
     1243    def test_examination_schedule_slip(self):
     1244        self.student.flash_notice = u'My Examination Date'
     1245        self.browser.open(self.login_path)
     1246        self.browser.getControl(name="form.login").value = self.student_id
     1247        self.browser.getControl(name="form.password").value = 'spwd'
     1248        self.browser.getControl("Login").click()
     1249        self.browser.getLink("Download examination schedule slip").click()
     1250        self.assertEqual(self.browser.headers['Status'], '200 Ok')
     1251        self.assertEqual(self.browser.headers['Content-Type'], 'application/pdf')
     1252        path = os.path.join(samples_dir(), 'examination_schedule_slip.pdf')
     1253        open(path, 'wb').write(self.browser.contents)
     1254        print "Sample PDF examination_schedule_slip.pdf written to %s" % path
     1255        # If flash_notive does not contain exam' the button does not show up.
     1256        self.student.flash_notice = u'anything'
     1257        self.browser.open(self.student_path)
     1258        self.assertFalse('examination schedule slip' in self.browser.contents)
  • main/waeup.aaue/trunk/src/waeup/aaue/students/viewlets.py

    r14544 r14661  
    104104        return self.view.url(self.view.context, self.target)
    105105
     106class ExaminationScheduleSlipActionButton(ManageActionButton):
     107    grok.order(10)
     108    grok.context(ICustomStudent)
     109    grok.view(StudentBaseDisplayFormPage)
     110    grok.require('waeup.viewStudent')
     111    icon = 'actionicon_pdf.png'
     112    text = _('Download examination schedule slip')
     113    target = 'examination_schedule_slip.pdf'
     114
     115    @property
     116    def target_url(self):
     117        if self.context.flash_notice \
     118            and 'exam' in self.context.flash_notice.lower():
     119            return self.view.url(self.view.context, self.target)
     120        return False
     121
    106122class PersonalDataSlipActionButton(ManageActionButton):
    107123    grok.order(3)
Note: See TracChangeset for help on using the changeset viewer.