Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions sbc_compassion/models/correspondence_s2b_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,26 @@ 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))
Expand Down