From 4b81537b9d1459d9a6dcfeca943ee1c1501f70a9 Mon Sep 17 00:00:00 2001 From: MCI Date: Wed, 9 Apr 2025 13:41:45 +0200 Subject: [PATCH 1/2] T2288 Feat: Max pages for a letter --- .../models/correspondence_s2b_generator.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sbc_compassion/models/correspondence_s2b_generator.py b/sbc_compassion/models/correspondence_s2b_generator.py index 64e62c198..f22fc8641 100644 --- a/sbc_compassion/models/correspondence_s2b_generator.py +++ b/sbc_compassion/models/correspondence_s2b_generator.py @@ -131,6 +131,20 @@ def onchange_month(self): def preview(self): """Generate a picture for preview.""" pdf = self._get_pdf(self.sponsorship_ids[:1])[0] + + # T2288 Force the maximum pages of a letter to be 15 + pdf_list = self._get_pdf(self.sponsorship_ids[:1]) + pdfPagesCount = pdf_list[0] if pdf_list and isinstance(pdf_list[0], (bytes, bytearray)) else None + + # Convert the byte string into a file-like object and initialize the PDF reader. + reader = PdfFileReader(BytesIO(pdfPagesCount)) + # Count the number of pages in the PDF. + pageCount = len(reader.pages) + + # Raise an error if the letter exceeds 15 pages, showing the actual number. + if pageCount > 15: + raise UserError(_("This letter has %d pages. Please limit it to 15 pages.") % pageCount) + if self.template_id.layout == "CH-A-3S01-1": # Read page 2 in_pdf = PdfFileReader(BytesIO(pdf)) From 4e5918987836a7a70001d2b5cb4a3fbf4ea49d00 Mon Sep 17 00:00:00 2001 From: MCI Date: Wed, 9 Apr 2025 14:23:27 +0200 Subject: [PATCH 2/2] T2288 Feat: Max pages for a letter --- sbc_compassion/models/correspondence_s2b_generator.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sbc_compassion/models/correspondence_s2b_generator.py b/sbc_compassion/models/correspondence_s2b_generator.py index f22fc8641..fc5664340 100644 --- a/sbc_compassion/models/correspondence_s2b_generator.py +++ b/sbc_compassion/models/correspondence_s2b_generator.py @@ -134,7 +134,11 @@ def preview(self): # T2288 Force the maximum pages of a letter to be 15 pdf_list = self._get_pdf(self.sponsorship_ids[:1]) - pdfPagesCount = pdf_list[0] if pdf_list and isinstance(pdf_list[0], (bytes, bytearray)) else None + pdfPagesCount = ( + pdf_list[0] + if pdf_list and isinstance(pdf_list[0], (bytes, bytearray)) + else None + ) # Convert the byte string into a file-like object and initialize the PDF reader. reader = PdfFileReader(BytesIO(pdfPagesCount)) @@ -143,7 +147,9 @@ def preview(self): # Raise an error if the letter exceeds 15 pages, showing the actual number. if pageCount > 15: - raise UserError(_("This letter has %d pages. Please limit it to 15 pages.") % pageCount) + raise UserError( + _("This letter has %d pages. Please limit it to 15 pages.") % pageCount + ) if self.template_id.layout == "CH-A-3S01-1": # Read page 2