Feuilles de poste compactées : une page par poste et par jour
ci-cd / build-backend (push) Failing after 1m2s
ci-cd / build-frontend (push) Skipped
ci-cd / deploy (push) Skipped

Bénévoles deux par ligne (vignette 10 mm, nom et téléphone superposés),
titres, en-têtes de créneau et marges resserrés — 6 feuilles réalistes :
11 pages ⇒ 6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AdamThomas
2026-10-28 19:22:46 +01:00
co-authored by Claude Opus 5.5
parent 749c7e0917
commit 5c2cc0a6c3
3 changed files with 97 additions and 33 deletions
+25 -1
View File
@@ -186,7 +186,7 @@ def test_footer_message_is_printed_at_the_bottom_of_every_page():
from app.sheets.pdf import SheetFooter
# Deux feuilles, dont une assez longue pour déborder sur une 2e page.
many = tuple(SheetVolunteer(name=f"Bénévole {i}", phone=None, photo=None) for i in range(40))
many = tuple(SheetVolunteer(name=f"Bénévole {i}", phone=None, photo=None) for i in range(120))
pdf = generate_position_sheets_pdf(
[_sheet(volunteers=many), _sheet()],
SheetFooter(title="Message de l'organisation", message="Repas à 18h30\nBadges à l'accueil"),
@@ -202,3 +202,27 @@ def test_footer_message_is_printed_at_the_bottom_of_every_page():
def test_no_footer_without_message():
pages = _page_texts(generate_position_sheets_pdf([_sheet()]))
assert "Message de l'organisation" not in pages[0]
def test_volunteers_are_listed_two_per_row():
from app.sheets.pdf import _shift_table, _styles
shift = _sheet(
volunteers=tuple(SheetVolunteer(name=f"B{i}", phone=None, photo=None) for i in range(5))
).shifts[0]
table = _shift_table(shift, {}, _styles(), 180)
# 5 bénévoles, deux par ligne : 3 lignes (la dernière à moitié vide).
assert len(table._cellvalues) == 3
def test_a_typical_sheet_fits_on_one_page():
volunteers = tuple(
SheetVolunteer(name=f"Prénom{i} Nom{i}", phone="06 12 34 56 78", photo=_PNG)
for i in range(8)
)
shift = _sheet(volunteers=volunteers).shifts[0]
sheet = _sheet(volunteers=volunteers)
many_shifts = PositionDaySheet(
**{**sheet.__dict__, "shifts": (shift, shift, shift, shift)}
)
assert len(_page_texts(generate_position_sheets_pdf([many_shifts]))) == 1