def add_postal_reply_attachment(request, slug, message_id): foirequest = get_object_or_404(FoiRequest, slug=slug) try: message = FoiMessage.objects.get(request=foirequest, pk=int(message_id)) except (ValueError, FoiMessage.DoesNotExist): raise Http404 if not request.user.is_authenticated(): return render_403(request) if request.user != foirequest.user: return render_403(request) if not message.is_postal: return render_400(request) form = PostalAttachmentForm(request.POST, request.FILES) if form.is_valid(): scan = request.FILES['scan'] scan_name = scan.name.rsplit(".", 1) scan_name = ".".join([slugify(n) for n in scan_name]) att = FoiAttachment(belongs_to=message, name=scan_name, size=scan.size, filetype=scan.content_type) att.file.save(scan_name, scan) att.approved = True att.save() messages.add_message(request, messages.SUCCESS, _('Your document was attached to the message.')) return HttpResponseRedirect(message.get_absolute_url()) messages.add_message(request, messages.ERROR, form._errors['scan'][0]) return render_400(request)
def add_postal_reply(request, slug): foirequest = get_object_or_404(FoiRequest, slug=slug) if not request.user.is_authenticated() or request.user != foirequest.user: return render_403(request) if not foirequest.public_body: return render_400(request) form = PostalReplyForm(request.POST, request.FILES) if form.is_valid(): message = FoiMessage(request=foirequest, is_response=True, is_postal=True, sender_name=form.cleaned_data['sender'], sender_public_body=foirequest.public_body) message.timestamp = datetime.datetime.combine(form.cleaned_data['date'], datetime.time()) message.subject = form.cleaned_data.get('subject', '') message.plaintext = "" if form.cleaned_data.get('text'): message.plaintext = form.cleaned_data.get('text') message.not_publishable = form.cleaned_data['not_publishable'] message.save() foirequest.status = 'awaiting_classification' foirequest.save() foirequest.add_postal_reply.send(sender=foirequest) if form.cleaned_data.get('scan'): scan = request.FILES['scan'] scan_name = scan.name.rsplit(".", 1) scan_name = ".".join([slugify(n) for n in scan_name]) att = FoiAttachment(belongs_to=message, name=scan_name, size=scan.size, filetype=scan.content_type) att.file.save(scan_name, scan) att.approved = True att.save() messages.add_message(request, messages.SUCCESS, _('A postal reply was successfully added!')) return HttpResponseRedirect(message.get_absolute_url()) messages.add_message(request, messages.ERROR, _('There were errors with your form submission!')) return show(request, slug, context={"postal_reply_form": form}, status=400)