diff --git a/froide/foirequest/models/attachment.py b/froide/foirequest/models/attachment.py index 4ea7dd7eb..417d7560b 100644 --- a/froide/foirequest/models/attachment.py +++ b/froide/foirequest/models/attachment.py @@ -388,12 +388,15 @@ def remove_file_and_delete(self): self.file.delete(save=False) self.delete() - def can_convert_to_pdf(self): + def is_filetype_convertable_to_pdf(self): from filingcabinet.pdf_utils import can_convert_to_pdf ft = self.filetype.lower() name = self.name.lower() - return self.converted_id is None and can_convert_to_pdf(ft, name=name) + return can_convert_to_pdf(ft, name=name) + + def can_convert_to_pdf(self): + return self.converted_id is None and self.is_filetype_convertable_to_pdf() def create_document(self, title=None): if self.document is not None: diff --git a/froide/foirequest/models/message.py b/froide/foirequest/models/message.py index 3925b1332..1bfd5d8e2 100644 --- a/froide/foirequest/models/message.py +++ b/froide/foirequest/models/message.py @@ -94,7 +94,12 @@ class MessageKind(models.TextChoices): MessageKind.IMPORT: "cloud-download", } -MANUAL_MESSAGE_KINDS = {MessageKind.POST, MessageKind.PHONE, MessageKind.VISIT} +MANUAL_MESSAGE_KINDS = { + MessageKind.POST, + MessageKind.PHONE, + MessageKind.VISIT, +} + MESSAGE_ID_PREFIX = "foimsg." @@ -643,7 +648,7 @@ def get_original_email_from_imap(self): return data def fails_authenticity(self): - if not self.is_response or not self.is_email: + if not self.is_response or not self.is_email or not self.email_headers: return checks = self.email_headers.get("authenticity") if not checks: diff --git a/froide/foirequest/serializers.py b/froide/foirequest/serializers.py index 3f33cd45c..9a237a6d1 100644 --- a/froide/foirequest/serializers.py +++ b/froide/foirequest/serializers.py @@ -274,6 +274,8 @@ class FoiMessageSerializer(serializers.HyperlinkedModelSerializer): read_only=True, ) status_name = serializers.CharField(source="get_status_display", read_only=True) + fails_authenticity = serializers.BooleanField(default=True, read_only=True) + is_escalation_message = serializers.BooleanField(default=False, read_only=True) class Meta: model = FoiMessage @@ -289,6 +291,7 @@ class Meta: "is_draft", "kind", "is_escalation", + "is_escalation_message", "content_hidden", "sender_public_body", "recipient_public_body", @@ -305,14 +308,17 @@ class Meta: "sender", "status_name", "last_modified_at", + "fails_authenticity", ] read_only_fields = [ "sent", "is_escalation", + "is_escalation_message", "content_hidden", "is_draft", "not_publishable", "last_modified_at", + "fails_authenticity", ] def _is_authenticated_read(self, obj): @@ -454,6 +460,9 @@ class FoiAttachmentSerializer(serializers.HyperlinkedModelSerializer): resource_uri = serializers.HyperlinkedIdentityField( view_name="api:attachment-detail", lookup_field="pk" ) + is_filetype_convertable_to_pdf = serializers.BooleanField( + default=False, read_only=True + ) converted = serializers.HyperlinkedRelatedField( view_name="api:attachment-detail", lookup_field="pk", @@ -485,6 +494,7 @@ class Meta: "file_url", "pending", "is_converted", + "is_filetype_convertable_to_pdf", "converted", "approved", "can_approve", diff --git a/froide/foirequest/signals.py b/froide/foirequest/signals.py index 324ff6095..f9c6bd402 100644 --- a/froide/foirequest/signals.py +++ b/froide/foirequest/signals.py @@ -137,7 +137,7 @@ def notify_user_message_received(sender, message=None, **kwargs): "user": sender.user, "publicbody": message.sender_public_body, "action_url": sender.user.get_autologin_url( - message.get_absolute_short_url() + short_request_url("foirequest-edit_message_flow_email", sender, message) ), }, priority=False, diff --git a/froide/foirequest/templates/foirequest/body/message/message.html b/froide/foirequest/templates/foirequest/body/message/message.html index c28c09850..2a2c51c53 100644 --- a/froide/foirequest/templates/foirequest/body/message/message.html +++ b/froide/foirequest/templates/foirequest/body/message/message.html @@ -207,14 +207,16 @@ {% endif %} {% endif %} + {# Redact button #} {% if object|can_write_foirequest:request or object|can_moderate_pii_foirequest:request %} {% render_message_redact_button message %} {% endif %} + {# Edit button #} {% if object|can_write_foirequest:request %} {% render_message_edit_button message %} {% endif %} {% endif %} - + {# Problem button #} {% render_problem_button message %} {% if object|can_moderate_foirequest:request and message.can_resend_bounce %} {% include "foirequest/body/message/toolbar/resend.html" %} diff --git a/froide/foirequest/templates/foirequest/edit_message_flow_email.html b/froide/foirequest/templates/foirequest/edit_message_flow_email.html new file mode 100644 index 000000000..204c6c55d --- /dev/null +++ b/froide/foirequest/templates/foirequest/edit_message_flow_email.html @@ -0,0 +1,66 @@ +{% extends "fullscreen_app.html" %} +{% load i18n %} +{% load static %} +{% load block_helper %} +{% load frontendbuild %} +{% load form_helper %} +{% load content_helper %} +{% load foirequest_tags %} +{% load problemreport_tags %} +{% block title %} + {% blocktrans with title=object.title %}Edit e-mail response for “{{ title }}”{% endblocktrans %} +{% endblock title %} +{% block navbar %} + {% include "header_reduced.html" %} +{% endblock navbar %} +{% block body %} +
+ {# the form never submits, but is useful for checkValidity #} + + {% if object|can_write_foirequest:request or object|can_moderate_pii_foirequest:request %} + {% render_message_redact_button message is_edit_message_flow_email=True partial='modal' %} + {% endif %} + {% render_problem_button message is_edit_message_flow_email=True partial='modal' %} +{% endblock body %} +{% block scripts %} + {{ block.super }} + {% addfrontendbuild "request.js" %} + {% addfrontendbuild "publicbody.js" %} + {% addfrontendbuild "editmessageflow.js" %} + {% addfrontendbuild "messageredaction.js" %} + {% addfrontendbuild "fileuploader.js" %} +{% endblock scripts %} diff --git a/froide/foirequest/templates/foirequest/upload_postal_message_new.html b/froide/foirequest/templates/foirequest/edit_message_flow_postal.html similarity index 60% rename from froide/foirequest/templates/foirequest/upload_postal_message_new.html rename to froide/foirequest/templates/foirequest/edit_message_flow_postal.html index 2dfd5bd50..f839978bb 100644 --- a/froide/foirequest/templates/foirequest/upload_postal_message_new.html +++ b/froide/foirequest/templates/foirequest/edit_message_flow_postal.html @@ -4,6 +4,8 @@ {% load block_helper %} {% load frontendbuild %} {% load form_helper %} +{% load content_helper %} +{% load foirequest_tags %} {% block title %} {% blocktrans with title=object.title %}Upload postal mail for “{{ title }}”{% endblocktrans %} {% endblock title %} @@ -11,25 +13,25 @@ {% include "header_reduced.html" %} {% endblock navbar %} {% block body %} -