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)
def test_csv(self): csv = PublicBody.export_csv() self.assertTrue(csv)