Esempio n. 1
0
    def save(self, commit=True):
        assert self.is_valid()

        inforequest = Inforequest(applicant=self.cleaned_data[u'applicant'], )

        @after_saved(inforequest)
        def deferred(inforequest):
            branch = Branch(
                inforequest=inforequest,
                obligee=self.cleaned_data[u'obligee'],
            )
            branch.save()

            action = Action(
                branch=branch,
                type=Action.TYPES.REQUEST,
                subject=self.cleaned_data[u'subject'],
                content=self.cleaned_data[u'content'],
                effective_date=inforequest.submission_date,
            )
            action.save()
            action.attachment_set = self.cleaned_data[u'attachments']

            if self.cleaned_data[u'send_email']:
                action.send_by_email()

        if commit:
            inforequest.save()
        return inforequest
Esempio n. 2
0
def inforequest_create(request, draft_pk=None):
    template = u'inforequests/create/create.html'
    draft = InforequestDraft.objects.owned_by(request.user).get_or_404(
        pk=draft_pk) if draft_pk else None
    session = Session.objects.get(session_key=request.session.session_key)
    attached_to = (session, draft) if draft else (session, )

    if request.method != u'POST':
        form = InforequestForm(attached_to=attached_to, user=request.user)
        if draft:
            form.load_from_draft(draft)
        return render(request, template, dict(form=form))

    button = clean_button(request.POST, [u'submit', u'draft'])

    if button == u'draft':
        form = InforequestForm(request.POST,
                               draft=True,
                               attached_to=attached_to,
                               user=request.user)
        if not form.is_valid():
            return render(request, template, dict(form=form))
        if not draft:
            draft = InforequestDraft(applicant=request.user)
        form.save_to_draft(draft)
        draft.save()
        return HttpResponseRedirect(reverse(u'inforequests:index'))

    if button == u'submit':
        form = InforequestForm(request.POST,
                               attached_to=attached_to,
                               user=request.user)
        if not form.is_valid():
            return render(request, template, dict(form=form))
        inforequest = Inforequest(applicant=request.user)
        form.save(inforequest)
        inforequest.save()
        inforequest.main_branch.last_action.send_by_email()
        if draft:
            draft.delete()
        return HttpResponseRedirect(inforequest.get_absolute_url())

    return HttpResponseBadRequest()