Example #1
0
class ActivityRecordView(BaseFormView):
    """
    Allow to record an activity content (attendance and datas)
    Should only return redirect
    """
    add_template_vars = ()

    schema = RecordActivitySchema()
    buttons = (
        ACTIVITY_RECORD_BUTTON,
        ACTIVITY_CANCEL_BUTTON,
        ACTIVITY_PDF_BUTTON,
    )

    def record_attendance(self, appstruct):
        """
        Record the attendances status in both cancelled and closed activity
        """
        for datas in appstruct.pop('attendances', []):
            account_id = datas['account_id']
            event_id = datas['event_id']

            obj = Attendance.get((account_id, event_id))
            if obj is not None:
                obj.status = datas['status']
                self.dbsession.merge(obj)

    def closed_success(self, appstruct):
        """
        Called when the record submit button is clicked
        """
        message = u"Les informations ont bien été enregistrées"
        self.record_attendance(appstruct)
        self.context.status = 'closed'
        return record_changes(self.request, appstruct, message, gotolist=True)

    def cancelled_success(self, appstruct):
        """
        Called when the cancelled button is clicked
        """
        message = u"Le rendez-vous a bien été annulé"
        self.record_attendance(appstruct)
        self.context.status = 'cancelled'
        return record_changes(self.request, appstruct, message, gotolist=True)

    def pdf_success(self, appstruct):
        """
        Called when the pdf button is clicked
        """
        self.record_attendance(appstruct)
        return record_changes(
            self.request,
            appstruct,
            message=None,
            gotolist=False,
            query_options={
                'action': 'edit',
                'show': 'pdf'
            },
        )
Example #2
0
 def record_form(self):
     """
     Return a form for recording the activity informations
     This form's submission will be handled in the ajax_submission page
     """
     submit_url = self.request.route_path(
         "activity",
         id=self.request.context.id,
         _query=dict(action="record"),
     )
     form = deform.Form(
         schema=RecordActivitySchema().bind(request=self.request),
         buttons=(
             ACTIVITY_RECORD_BUTTON,
             ACTIVITY_CANCEL_BUTTON,
             ACTIVITY_PDF_BUTTON,
         ),
         counter=self.counter,
         formid="record_form",
         action=submit_url,
     )
     form.set_appstruct(self.get_appstruct())
     auto_need(form)
     return form.render()