Bénévole : retrait de la taille de t-shirt et du régime alimentaire

Champs `tshirt_size` et `diet` supprimés du modèle `Volunteer`, des schémas
d'API, de l'import CSV/Excel (mapping, suggestions, exécution) et du jeu de
démonstration. Énum `TshirtSize` et helper `parse_tshirt_size` supprimés.
Migration 0005. Clé i18n `import.row.invalid_tshirt_size` retirée.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017uUsRg7XzopkCPWimwg9ZM
This commit is contained in:
AdamThomas
2026-09-10 22:07:00 +02:00
co-authored by Claude Sonnet 5
parent ccf3438eef
commit 609514369a
14 changed files with 46 additions and 113 deletions
-2
View File
@@ -23,14 +23,12 @@ def test_create_volunteer_with_skills(client, edition):
"first_name": "Alex",
"last_name": "Martin",
"email": "alex@ex.fr",
"tshirt_size": "M",
"skill_codes": ["SST", "PERMIS_B", "SST"],
},
)
assert resp.status_code == 201
body = resp.json()
assert body["skill_codes"] == ["PERMIS_B", "SST"]
assert body["tshirt_size"] == "M"
assert body["edition_id"] == str(edition.id)
-14
View File
@@ -21,7 +21,6 @@ def _mapping(dry_run: bool = False) -> ImportMapping:
first_name="Prénom",
last_name="Nom",
email="Email",
tshirt_size="Taille",
skills="Compétences",
),
availability_columns=[
@@ -78,7 +77,6 @@ def test_happy_path_creates_volunteers_skills_and_availabilities(session, editio
volunteers = {v.email: v for v in _volunteers(session, edition)}
assert set(volunteers) == {"alex@ex.fr", "sam@ex.fr"}
assert volunteers["alex@ex.fr"].tshirt_size.value == "M"
assert {s.code for s in volunteers["alex@ex.fr"].skills} == {"SST", "PERMIS_B"}
avails = session.exec(
@@ -194,18 +192,6 @@ def test_invalid_email_is_skipped(session, edition):
assert report.rows[0].issues[0].code == "import.row.invalid_email"
def test_unknown_tshirt_size_warns_and_still_imports(session, edition):
report = run_import(
session=session,
edition=edition,
table=_table([["Alex", "Martin", "a@ex.fr", "Large", "", "x", ""]]),
mapping=_mapping(),
)
assert report.created == 1
assert report.rows[0].issues[0].code == "import.row.invalid_tshirt_size"
assert _volunteers(session, edition)[0].tshirt_size is None
def test_unknown_availability_value_is_flagged(session, edition):
report = run_import(
session=session,
+2 -20
View File
@@ -1,8 +1,8 @@
import pytest
from app.importing.text import slug_code, split_skills
from app.importing.values import parse_availability_cell, parse_tshirt_size
from app.models import AvailabilityStatus, TshirtSize
from app.importing.values import parse_availability_cell
from app.models import AvailabilityStatus
@pytest.mark.parametrize(
@@ -32,24 +32,6 @@ def test_unknown_cell_is_flagged():
assert parse_availability_cell("bof") == (None, False)
@pytest.mark.parametrize(
("raw", "expected"),
[
("M", TshirtSize.M),
(" m ", TshirtSize.M),
("xl", TshirtSize.XL),
("2XL", TshirtSize.XXL),
("3 XL", TshirtSize.XXXL),
],
)
def test_tshirt_sizes(raw, expected):
assert parse_tshirt_size(raw) is expected
def test_unknown_tshirt_size_is_none():
assert parse_tshirt_size("large") is None
def test_slug_code_is_stable_across_accents_and_case():
assert slug_code("Régie son") == "REGIE_SON"
assert slug_code(" permis B ") == "PERMIS_B"