Mode de paiement de la cotisation visible (en ligne, sur place)
Jusqu'ici seul un paiement en ligne apparaissait ; un bénévole qui paiera sur place ne se distinguait pas d'un bénévole sans cotisation. Mode déduit des champs existants (lib/fee.ts:feeMode, exporting/xlsx.py:_payment_mode), sans migration : - fiche : section « Cotisation » toujours visible — paiement en ligne (type, montant, statut, mécénat et adresse du reçu) ou case « Paiera sur place » modifiable à la main - liste : colonne « Cotisation » (Sur place / En ligne ✓ / Mécénat ✓ / —) - export Excel : colonne « Mode de paiement » Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
a6e7b6e7fb
commit
ff57bbd863
@@ -427,6 +427,22 @@ def test_export_volunteers_as_excel(client, edition, session):
|
||||
assert row[6] == "Chilla"
|
||||
|
||||
|
||||
def test_export_says_how_each_volunteer_pays(client, edition, session):
|
||||
on_site = make_volunteer(session, edition, first_name="Alex", last_name="A")
|
||||
on_site.willing_to_pay_fee = True
|
||||
online = make_volunteer(session, edition, first_name="Sam", last_name="B")
|
||||
_mark_mecenat_paid(session, online)
|
||||
make_volunteer(session, edition, first_name="Jo", last_name="C")
|
||||
session.add(on_site)
|
||||
session.commit()
|
||||
|
||||
resp = client.get(_url(edition, "/export"))
|
||||
rows = list(load_workbook(io.BytesIO(resp.content)).active.iter_rows(values_only=True))
|
||||
column = rows[0].index("Mode de paiement")
|
||||
by_first_name = {row[0]: row[column] for row in rows[1:]}
|
||||
assert by_first_name == {"Alex": "Sur place", "Sam": "En ligne", "Jo": None}
|
||||
|
||||
|
||||
def test_export_neutralizes_formula_injection(client, edition, session):
|
||||
# CWE-1236 : un bénévole inscrit via le formulaire public (sans
|
||||
# authentification) contrôle son nom, son commentaire, etc. — ouverts
|
||||
@@ -443,9 +459,9 @@ def test_export_neutralizes_formula_injection(client, edition, session):
|
||||
|
||||
resp = client.get(_url(edition, "/export"))
|
||||
workbook = load_workbook(io.BytesIO(resp.content))
|
||||
row = list(workbook.active.iter_rows(values_only=True))[1]
|
||||
header, row = list(workbook.active.iter_rows(values_only=True))[:2]
|
||||
assert row[0] == "'=cmd|'/c calc'!A0"
|
||||
assert row[17] == "'@SUM(1+1)*cmd|' /C calc'!A0"
|
||||
assert row[header.index("Commentaire")] == "'@SUM(1+1)*cmd|' /C calc'!A0"
|
||||
|
||||
|
||||
def test_export_volunteers_is_coordinator_only(edition, make_account, as_account):
|
||||
|
||||
Reference in New Issue
Block a user