Ignore:
Timestamp:
1 Aug 2024, 11:02:51 (7 weeks ago)
Author:
Henrik Bettermann
Message:

Implement final clearance.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/kofacustom.nigeria/trunk/src/kofacustom/nigeria/students/browser.py

    r17811 r17866  
    6565    form_fields[
    6666        'financial_clearance_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
     67    form_fields[
     68        'final_clearance_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
    6769
    6870class NigeriaStudentBaseManageFormPage(StudentBaseManageFormPage):
     
    7173    form_fields = grok.AutoFields(INigeriaStudentBase).omit(
    7274        'student_id', 'adm_code', 'suspended',
    73         'financially_cleared_by', 'financial_clearance_date')
     75        'financially_cleared_by', 'financial_clearance_date',
     76        'finally_cleared_by', 'final_clearance_date')
    7477
    7578class NigeriaStudentBaseEditFormPage(StudentBaseEditFormPage):
     
    400403            note=self.note
    401404            )
     405
     406class ClearStudentFinally(UtilityView, grok.View):
     407    """ Clear student finally by final clearance officer
     408    """
     409    grok.context(INigeriaStudent)
     410    grok.name('clear_finally')
     411    grok.require('waeup.clearStudentFinally')
     412
     413    def update(self):
     414        if self.context.finally_cleared_by:
     415            self.flash(_('This student has already been finally cleared.'),
     416                       type="danger")
     417            self.redirect(self.url(self.context))
     418            return
     419        user = get_current_principal()
     420        if user is None:
     421            usertitle = 'system'
     422        else:
     423            usertitle = getattr(user, 'public_name', None)
     424            if not usertitle:
     425                usertitle = user.title
     426        self.context.finally_cleared_by = usertitle
     427        self.context.final_clearance_date = datetime.utcnow()
     428        self.context.writeLogMessage(self,'finally cleared')
     429        history = IObjectHistory(self.context)
     430        history.addMessage('Finally cleared')
     431        self.flash(_('Student has been finally cleared.'))
     432        self.redirect(self.url(self.context))
     433        return
     434
     435    def render(self):
     436        return
     437
     438class WithdrawFinalClearance(UtilityView, grok.View):
     439    """ Withdraw final clearance by final clearance officer
     440    """
     441    grok.context(INigeriaStudent)
     442    grok.name('withdraw_final_clearance')
     443    grok.require('waeup.clearStudentFinally')
     444
     445    def update(self):
     446        if not self.context.finally_cleared_by:
     447            self.flash(_('This student has not yet been finally cleared.'),
     448                       type="danger")
     449            self.redirect(self.url(self.context))
     450            return
     451        self.context.finally_cleared_by = None
     452        self.context.final_clearance_date = None
     453        self.context.writeLogMessage(self,'final clearance withdrawn')
     454        history = IObjectHistory(self.context)
     455        history.addMessage('Final clearance withdrawn')
     456        self.flash(_('Final clearance withdrawn.'))
     457        self.redirect(self.url(self.context))
     458        return
     459
     460    def render(self):
     461        return
     462
     463cleared_note = """
     464<br /><br /><br />
     465<strong>Finally cleared on %s by %s.</strong>
     466
     467"""
Note: See TracChangeset for help on using the changeset viewer.