From af0d79f617199b31ff94c332998af220736d0d82 Mon Sep 17 00:00:00 2001 From: Wilson Gaturu Date: Tue, 5 Mar 2024 16:22:56 +0300 Subject: [PATCH 1/3] fixes update text content --- peachjam/admin.py | 7 ++----- peachjam/models/core_document_model.py | 11 ++++------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/peachjam/admin.py b/peachjam/admin.py index ac1d3579e..1db0605fc 100644 --- a/peachjam/admin.py +++ b/peachjam/admin.py @@ -322,11 +322,6 @@ def clean_content_html(self): return self.instance.content_html return self.cleaned_data["content_html"] - def _save_m2m(self): - super()._save_m2m() - # update document text - self.instance.update_text_content() - class AttachedFilesInline(BaseAttachmentFileInline): model = AttachedFiles @@ -504,7 +499,9 @@ def save_related(self, request, form, formsets, change): cp.queue_re_extract_citations(form.instance.date) super().save_related(request, form, formsets, change) + form.instance.save() + form.instance.update_text_content() def get_urls(self): return [ diff --git a/peachjam/models/core_document_model.py b/peachjam/models/core_document_model.py index 119946029..b93090b76 100644 --- a/peachjam/models/core_document_model.py +++ b/peachjam/models/core_document_model.py @@ -711,13 +711,10 @@ class Meta: abstract = True def save(self, *args, **kwargs): - if not self.filename: - self.filename = self.file.name - if not self.size: - self.size = self.file.size - if not self.mimetype: - self.file.seek(0) - self.mimetype = magic.from_buffer(self.file.read(), mime=True) + self.filename = self.file.name + self.size = self.file.size + self.file.seek(0) + self.mimetype = magic.from_buffer(self.file.read(), mime=True) return super().save(*args, **kwargs) From d88537cec2964fbcc42910ecad29fc5e4f9a7174 Mon Sep 17 00:00:00 2001 From: Wilson Gaturu Date: Wed, 6 Mar 2024 09:34:33 +0300 Subject: [PATCH 2/3] clears source file fields on update --- peachjam/forms.py | 9 +++++++++ peachjam/models/core_document_model.py | 11 +++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/peachjam/forms.py b/peachjam/forms.py index cc7f5fdcb..61badcc6b 100644 --- a/peachjam/forms.py +++ b/peachjam/forms.py @@ -188,6 +188,15 @@ def _save_m2m(self): self.instance.file_as_pdf.delete() self.instance.ensure_file_as_pdf() + def clean(self): + cleaned_data = super().clean() + if "file" in self.changed_data: + # clear all the fields that are derived from the file + for field in ["mimetype", "size", "file_as_pdf", "filename"]: + self.instance.__dict__[field] = None + + return cleaned_data + class AttachedFilesForm(AttachmentFormMixin, forms.ModelForm): class Meta: diff --git a/peachjam/models/core_document_model.py b/peachjam/models/core_document_model.py index b93090b76..119946029 100644 --- a/peachjam/models/core_document_model.py +++ b/peachjam/models/core_document_model.py @@ -711,10 +711,13 @@ class Meta: abstract = True def save(self, *args, **kwargs): - self.filename = self.file.name - self.size = self.file.size - self.file.seek(0) - self.mimetype = magic.from_buffer(self.file.read(), mime=True) + if not self.filename: + self.filename = self.file.name + if not self.size: + self.size = self.file.size + if not self.mimetype: + self.file.seek(0) + self.mimetype = magic.from_buffer(self.file.read(), mime=True) return super().save(*args, **kwargs) From 56cb27ffcf246ff021693a7213a491e041390152 Mon Sep 17 00:00:00 2001 From: Wilson Gaturu Date: Wed, 6 Mar 2024 10:26:47 +0300 Subject: [PATCH 3/3] clear file fields explicitly --- peachjam/forms.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/peachjam/forms.py b/peachjam/forms.py index 61badcc6b..fa0a1b8dd 100644 --- a/peachjam/forms.py +++ b/peachjam/forms.py @@ -192,8 +192,10 @@ def clean(self): cleaned_data = super().clean() if "file" in self.changed_data: # clear all the fields that are derived from the file - for field in ["mimetype", "size", "file_as_pdf", "filename"]: - self.instance.__dict__[field] = None + self.instance.mimetype = None + self.instance.size = None + self.instance.file_as_pdf = None + self.instance.filename = None return cleaned_data