Disponibilités déclarées supprimées (table `availability`, migration 0022, API, éditeur de la fiche bénévole, badge de couverture du panneau d'affectation, colonnes des statistiques) ainsi que les règles OUTSIDE_AVAILABILITY, DAILY_HOURS_EXCEEDED et INSUFFICIENT_REST, les malus de disponibilité et de repos du solveur et le filtre « Surchargés » de la vue bénévoles. Seul le chevauchement reste contrôlé. La case « je suis disponible » du formulaire public est conservée. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
56 lines
2.1 KiB
Python
56 lines
2.1 KiB
Python
"""Suppression des disponibilités déclarées
|
|
|
|
Revision ID: 0022_drop_availability
|
|
Revises: 0021_payment_option_free_amount
|
|
Create Date: 2026-10-05
|
|
|
|
Les fenêtres de disponibilité (`availability`) disparaissent, avec la règle
|
|
`OUTSIDE_AVAILABILITY` qui les exploitait. Les données existantes sont
|
|
perdues : le `downgrade` recrée la table vide. La case « je suis
|
|
disponible » du formulaire public (`volunteer.self_declared_available`)
|
|
n'est pas concernée.
|
|
"""
|
|
|
|
from collections.abc import Sequence
|
|
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision: str = "0022_drop_availability"
|
|
down_revision: str | None = "0021_payment_option_free_amount"
|
|
branch_labels: str | Sequence[str] | None = None
|
|
depends_on: str | Sequence[str] | None = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.drop_index(op.f("ix_availability_volunteer_id"), table_name="availability")
|
|
op.drop_index(op.f("ix_availability_edition_id"), table_name="availability")
|
|
op.drop_table("availability")
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.create_table(
|
|
"availability",
|
|
sa.Column("created_at", sa.DateTime(), nullable=False),
|
|
sa.Column("updated_at", sa.DateTime(), nullable=False),
|
|
sa.Column("id", sa.Uuid(), nullable=False),
|
|
sa.Column("edition_id", sa.Uuid(), nullable=False),
|
|
sa.Column("volunteer_id", sa.Uuid(), nullable=False),
|
|
sa.Column("date", sa.Date(), nullable=False),
|
|
sa.Column("start_time", sa.Time(), nullable=False),
|
|
sa.Column("end_time", sa.Time(), nullable=False),
|
|
sa.ForeignKeyConstraint(["edition_id"], ["edition.id"], ondelete="CASCADE"),
|
|
sa.ForeignKeyConstraint(["volunteer_id"], ["volunteer.id"], ondelete="CASCADE"),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
sa.UniqueConstraint(
|
|
"volunteer_id", "date", "start_time", "end_time",
|
|
name="uq_availability_window",
|
|
),
|
|
)
|
|
op.create_index(
|
|
op.f("ix_availability_edition_id"), "availability", ["edition_id"], unique=False
|
|
)
|
|
op.create_index(
|
|
op.f("ix_availability_volunteer_id"), "availability", ["volunteer_id"], unique=False
|
|
)
|