Étape 55 : écrans /mobile-benevole et /mobile-referent d'après la maquette (design/Planning bénévole mobile) — créneau en cours ou prochain mis en avant, planning par journée de festival avec frise horaire, compteurs et pointage du référent par créneau. Étape 56 : message de l'organisation (Edition.volunteer_message, onglet « Message aux bénévoles ») et message de chaque poste (Position.message, saisi par le référent), migration 0029, affichés sur l'écran bénévole. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
"""Messages aux bénévoles
|
|
|
|
Revision ID: 0029_volunteer_messages
|
|
Revises: 0028_badge_field_z_order
|
|
Create Date: 2026-10-28
|
|
|
|
`edition.volunteer_message` : message de l'organisation, le même pour tous
|
|
les bénévoles, saisi par la coordination. `position.message` : message du
|
|
poste (consignes…), saisi par son référent, montré aux bénévoles affectés.
|
|
Chacun avec la date de sa dernière modification (`*_updated_at`).
|
|
"""
|
|
|
|
from collections.abc import Sequence
|
|
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision: str = "0029_volunteer_messages"
|
|
down_revision: str | None = "0028_badge_field_z_order"
|
|
branch_labels: str | Sequence[str] | None = None
|
|
depends_on: str | Sequence[str] | None = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.add_column("edition", sa.Column("volunteer_message", sa.String(), nullable=True))
|
|
op.add_column(
|
|
"edition", sa.Column("volunteer_message_updated_at", sa.DateTime(), nullable=True)
|
|
)
|
|
op.add_column("position", sa.Column("message", sa.String(), nullable=True))
|
|
op.add_column("position", sa.Column("message_updated_at", sa.DateTime(), nullable=True))
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_column("position", "message_updated_at")
|
|
op.drop_column("position", "message")
|
|
op.drop_column("edition", "volunteer_message_updated_at")
|
|
op.drop_column("edition", "volunteer_message")
|