Files
Enclume/migrations/versions/0001_socle.py
T
hcornet b063d59525
build / Garde-fou (pull_request) Failing after 7s
build / Images Harbor (catalog-sync, Dockerfile.catalog-sync) (pull_request) Skipped
build / Images Harbor (web, Dockerfile) (pull_request) Skipped
build / Garde-fou (push) Failing after 8s
build / Images Harbor (catalog-sync, Dockerfile.catalog-sync) (push) Skipped
build / Images Harbor (web, Dockerfile) (push) Skipped
Partage par lien, comptes Authentik, soumission et moderation de packs, prerequis des sondes ; corrige le lien casse vers le script de l'editeur
2026-09-10 16:28:26 +02:00

74 lines
3.0 KiB
Python

"""Socle : comptes, projets, partages, soumissions.
Revision ID: 0001
Revises:
"""
import sqlalchemy as sa
from alembic import op
revision = "0001"
down_revision = None
branch_labels = None
depends_on = None
def upgrade() -> None:
op.create_table(
"utilisateurs",
sa.Column("id", sa.Integer(), primary_key=True),
sa.Column("sujet", sa.String(255), nullable=False, unique=True),
sa.Column("email", sa.String(320), server_default=""),
sa.Column("nom", sa.String(255), server_default=""),
sa.Column("administrateur", sa.Boolean(), server_default=sa.false()),
sa.Column("cree_le", sa.DateTime(timezone=True), server_default=sa.func.now()),
sa.Column("vu_le", sa.DateTime(timezone=True), server_default=sa.func.now()),
)
op.create_table(
"projets",
sa.Column("id", sa.Integer(), primary_key=True),
sa.Column("utilisateur_id", sa.Integer(), sa.ForeignKey("utilisateurs.id"), nullable=False),
sa.Column("nom", sa.String(255), server_default="Projet sans nom"),
sa.Column("contenu", sa.Text(), nullable=False),
sa.Column("cree_le", sa.DateTime(timezone=True), server_default=sa.func.now()),
sa.Column("maj_le", sa.DateTime(timezone=True), server_default=sa.func.now()),
)
op.create_index("ix_projets_utilisateur", "projets", ["utilisateur_id"])
op.create_table(
"partages",
sa.Column("id", sa.String(32), primary_key=True),
sa.Column("contenu", sa.Text(), nullable=False),
sa.Column("nom", sa.String(255), server_default=""),
sa.Column("utilisateur_id", sa.Integer(), sa.ForeignKey("utilisateurs.id"), nullable=True),
sa.Column("cree_le", sa.DateTime(timezone=True), server_default=sa.func.now()),
sa.Column("expire_le", sa.DateTime(timezone=True), nullable=False),
sa.Column("vues", sa.Integer(), server_default="0"),
)
op.create_index("ix_partages_expire", "partages", ["expire_le"])
op.create_table(
"soumissions",
sa.Column("id", sa.Integer(), primary_key=True),
sa.Column("utilisateur_id", sa.Integer(), sa.ForeignKey("utilisateurs.id"), nullable=False),
sa.Column("pack_id", sa.String(64), nullable=False),
sa.Column("categorie", sa.String(32), nullable=False),
sa.Column("nom", sa.String(255), server_default=""),
sa.Column("contenu", sa.Text(), nullable=False),
sa.Column("message", sa.Text(), server_default=""),
sa.Column("statut", sa.String(16), server_default="en_attente"),
sa.Column("reponse", sa.Text(), server_default=""),
sa.Column("url_pr", sa.String(512), server_default=""),
sa.Column("cree_le", sa.DateTime(timezone=True), server_default=sa.func.now()),
sa.Column("traite_le", sa.DateTime(timezone=True), nullable=True),
)
op.create_index("ix_soumissions_statut", "soumissions", ["statut"])
def downgrade() -> None:
op.drop_table("soumissions")
op.drop_table("partages")
op.drop_table("projets")
op.drop_table("utilisateurs")