def create_or_get_audit(post_data, user, result_form, form): """Get or save an audit for the result form. :param post_data: The form data to use in the audit form. :param user: The user to assign to the audit as user or supervisor depending on the user's group. :param result_form: The result form to associate the audit with. :param form: The form to create an audit from if one does not exist. :returns: A retrived of created audit for the result form. """ audit = result_form.audit if audit: audit = AuditForm( post_data, instance=audit).save(commit=False) if groups.AUDIT_CLERK in user.groups.values_list( 'name', flat=True): audit.user = user else: audit.supervisor = user else: result_form.audited_count += 1 result_form.save() audit = form.save(commit=False) audit.result_form = result_form audit.user = user return audit
def get(self, *args, **kwargs): tally_id = kwargs.get('tally_id') pk = self.request.session['result_form'] result_form = get_object_or_404(ResultForm, pk=pk, tally__id=tally_id) form_class = self.get_form_class() audit = result_form.audit form = AuditForm( instance=audit) if audit else self.get_form(form_class) self.request.session[ 'encoded_result_form_audit_start_time'] =\ json.loads(json.dumps(timezone.now(), cls=DjangoJSONEncoder)) return self.render_to_response( self.get_context_data(form=form, result_form=result_form, is_clerk=is_clerk(self.request.user), tally_id=tally_id))