Bénévole : vœux d'artistes (entité Artist) et vœux de postes

Nouvelle entité `Artist` (nom + jour de passage), CRUD
`/editions/{id}/artists` (lecture ouverte à tout compte de l'édition,
écriture COORDINATION), unicité (édition, nom, date).

La fiche bénévole porte deux listes de vœux, sur le modèle de
`skill_codes` (None = inchangé, [] = vider) :
- `artist_ids` : artistes que le bénévole veut voir (`volunteer_artist`) ;
- `wished_position_ids` : postes qu'il voudrait tenir
  (`volunteer_position_wish`), distinct de l'affectation.

Un id étranger à l'édition renvoie 422 (`artist.unknown` /
`position.unknown`). Suppression d'un artiste : cascade sur les vœux.
Migration 0006. Jeu de démonstration et frontend inchangés (le front
suivra).

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:12:55 +02:00
co-authored by Claude Sonnet 5
parent 609514369a
commit 24caece7df
13 changed files with 618 additions and 11 deletions
+13
View File
@@ -3,6 +3,7 @@
import datetime as dt
from app.models import (
Artist,
Availability,
AvailabilityStatus,
Position,
@@ -22,6 +23,18 @@ def make_position(session, edition, *, name="Bar", category=PositionCategory.BAR
return position
def make_artist(
session, edition, *, name="Chilla", performance_date=dt.date(2026, 7, 10)
):
artist = Artist(
edition_id=edition.id, name=name, performance_date=performance_date
)
session.add(artist)
session.commit()
session.refresh(artist)
return artist
def make_shift(
session, edition, position, *, start, end, min_staff=1, ideal_staff=2, skills=()
):