diff --git a/CHANGES.rst b/CHANGES.rst index 5c8c08550e..e6d919cc8e 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -5,6 +5,7 @@ Changelog 2.3.0 (unreleased) ------------------ +- #2072 Refactor report filename generation to own method - #2071 Move sample reports to report catalog, add batch ID and email sent flag to listing - #2070 Fix typo/duplicate translation key in colophon - #2067 Replace ParentAnalysisRequest ReferenceField by UIDReferenceField diff --git a/src/bika/lims/browser/publish/downloadview.py b/src/bika/lims/browser/publish/downloadview.py index 1d05834a8e..5df3adcd46 100644 --- a/src/bika/lims/browser/publish/downloadview.py +++ b/src/bika/lims/browser/publish/downloadview.py @@ -18,6 +18,7 @@ # Copyright 2018-2021 by it's authors. # Some rights reserved, see README and LICENSE. +from bika.lims import api from Products.Five.browser import BrowserView @@ -29,11 +30,16 @@ def __init__(self, context, request): super(DownloadView, self).__init__(context, request) def __call__(self): - ar = self.context.getAnalysisRequest() - filename = "{}.pdf".format(ar.getId()) + filename = self.get_report_filename(self.context) pdf = self.context.getPdf() self.download(pdf.data, filename) + def get_report_filename(self, report): + """Generate the filename for the sample PDF + """ + sample = report.getAnalysisRequest() + return "{}.pdf".format(api.get_id(sample)) + def download(self, data, filename, content_type="application/pdf"): """Download the PDF """ diff --git a/src/bika/lims/browser/publish/emailview.py b/src/bika/lims/browser/publish/emailview.py index b1f34ba081..d5bf7e29fc 100644 --- a/src/bika/lims/browser/publish/emailview.py +++ b/src/bika/lims/browser/publish/emailview.py @@ -319,8 +319,7 @@ def email_attachments(self): logger.error("Skipping empty PDF for report {}" .format(report.getId())) continue - sample = report.getAnalysisRequest() - filename = "{}.pdf".format(api.get_id(sample)) + filename = self.get_report_filename(report) filedata = pdf.data attachments.append( mailapi.to_email_attachment(filedata, filename)) @@ -550,7 +549,7 @@ def get_report_data(self, report): attachments_data = map(self.get_attachment_data, attachments) pdf = self.get_pdf(report) filesize = "{} Kb".format(self.get_filesize(pdf)) - filename = "{}.pdf".format(sample.getId()) + filename = self.get_report_filename(report) return { "sample": sample, @@ -700,6 +699,12 @@ def get_filesize(self, f): except (POSKeyError, TypeError, AttributeError): return 0.0 + def get_report_filename(self, report): + """Generate the filename for the sample PDF + """ + sample = report.getAnalysisRequest() + return "{}.pdf".format(api.get_id(sample)) + def get_pdf(self, obj): """Get the report PDF """