def make_same_request(request, slug, message_id): foirequest = get_object_or_404(FoiRequest, slug=slug) message = get_object_or_404(FoiMessage, id=int(message_id)) if not request.user.is_authenticated(): return render_403(request) if not foirequest == message.request: return render_400(request) if not message.not_publishable: return render_400(request) if foirequest.same_as is not None: foirequest = foirequest.same_as same_requests = FoiRequest.objects.filter(user=request.user, same_as=foirequest).count() if same_requests: messages.add_message(request, messages.ERROR, _("You already made an identical request")) return render_400(request) body = u"%s\n\n%s" % (foirequest.description, _('Please see this request on FragDenStaat.de where you granted access to this information: %(url)s') % {'url': foirequest.get_absolute_domain_short_url()}) fr = FoiRequest.from_request_form( request.user, foirequest.public_body, foirequest.law, form_data=dict( subject=foirequest.title, body=body, public=foirequest.public )) # Don't pass post_data, get default letter of law fr.same_as = foirequest fr.save() messages.add_message(request, messages.SUCCESS, _('You successfully requested this document! Your request is displayed below.')) return HttpResponseRedirect(fr.get_absolute_url())
def submit_request(request, public_body=None): error = False foilaw = None if public_body is not None: public_body = get_object_or_404(PublicBody, slug=public_body) all_laws = FoiLaw.objects.filter(jurisdiction=public_body.jurisdiction) else: all_laws = FoiLaw.objects.all() context = {"public_body": public_body} request_form = RequestForm(all_laws, FoiLaw.get_default_law(public_body), True, request.POST) context['request_form'] = request_form context['public_body_form'] = PublicBodyForm() if public_body is None and \ request.POST.get('public_body') == "new": pb_form = PublicBodyForm(request.POST) context["public_body_form"] = pb_form if pb_form.is_valid(): data = pb_form.cleaned_data data['confirmed'] = False public_body = PublicBody(**data) else: error = True if not request_form.is_valid(): error = True else: if public_body is None and \ request_form.cleaned_data['public_body'] != '' and \ request_form.cleaned_data['public_body'] != 'new': public_body = request_form.public_body_object context['user_form'] = None user = None if not request.user.is_authenticated(): user_form = NewUserForm(request.POST) context['user_form'] = user_form if not user_form.is_valid(): error = True else: user = request.user if not error: password = None if user is None: user, password = AccountManager.create_user(**user_form.cleaned_data) sent_to_pb = 1 if public_body is not None and public_body.pk is None: public_body._created_by = user public_body.save() sent_to_pb = 2 elif public_body is None: sent_to_pb = 0 if foilaw is None: foilaw = request_form.foi_law foi_request = FoiRequest.from_request_form(user, public_body, foilaw, form_data=request_form.cleaned_data, post_data=request.POST) if user.is_active: if sent_to_pb == 0: messages.add_message(request, messages.INFO, _('Others can now suggest the Public Bodies for your request.')) elif sent_to_pb == 2: messages.add_message(request, messages.INFO, _('Your request will be sent as soon as the newly created Public Body was confirmed by an administrator.')) else: messages.add_message(request, messages.INFO, _('Your request has been sent.')) return HttpResponseRedirect(foi_request.get_absolute_url()) else: AccountManager(user).send_confirmation_mail(request_id=foi_request.pk, password=password) messages.add_message(request, messages.INFO, _('Please check your inbox for mail from us to confirm your mail address.')) # user cannot access the request yet! return HttpResponseRedirect("/") messages.add_message(request, messages.ERROR, _('There were errors in your form submission. Please review and submit again.')) return render(request, 'foirequest/request.html', context, status=400)