forked from ScoDoc/ScoDoc
64 lines
1.6 KiB
Python
64 lines
1.6 KiB
Python
|
"""validation niveaux inferieurs
|
||
|
|
||
|
Revision ID: c701224fa255
|
||
|
Revises: d84bc592584e
|
||
|
Create Date: 2023-06-11 11:08:05.553898
|
||
|
|
||
|
"""
|
||
|
from alembic import op
|
||
|
import sqlalchemy as sa
|
||
|
from sqlalchemy.orm import sessionmaker # added by ev
|
||
|
|
||
|
# revision identifiers, used by Alembic.
|
||
|
revision = "c701224fa255"
|
||
|
down_revision = "d84bc592584e"
|
||
|
branch_labels = None
|
||
|
depends_on = None
|
||
|
|
||
|
Session = sessionmaker()
|
||
|
|
||
|
|
||
|
def upgrade():
|
||
|
# Ajoute la colonne formation_id, nullable, la peuple puis la rend non nullable
|
||
|
op.add_column(
|
||
|
"apc_validation_annee", sa.Column("formation_id", sa.Integer(), nullable=True)
|
||
|
)
|
||
|
op.create_foreign_key(
|
||
|
"apc_validation_annee_formation_id_fkey",
|
||
|
"apc_validation_annee",
|
||
|
"notes_formations",
|
||
|
["formation_id"],
|
||
|
["id"],
|
||
|
)
|
||
|
|
||
|
# Affecte la formation des anciennes validations
|
||
|
bind = op.get_bind()
|
||
|
session = Session(bind=bind)
|
||
|
session.execute(
|
||
|
sa.text(
|
||
|
"""
|
||
|
UPDATE apc_validation_annee AS a
|
||
|
SET formation_id = (
|
||
|
SELECT f.id
|
||
|
FROM notes_formations f
|
||
|
JOIN notes_formsemestre s ON f.id = s.formation_id
|
||
|
WHERE s.id = a.formsemestre_id
|
||
|
)
|
||
|
WHERE a.formsemestre_id IS NOT NULL;
|
||
|
"""
|
||
|
)
|
||
|
)
|
||
|
op.alter_column(
|
||
|
"apc_validation_annee",
|
||
|
"formation_id",
|
||
|
nullable=False,
|
||
|
)
|
||
|
|
||
|
|
||
|
def downgrade():
|
||
|
with op.batch_alter_table("apc_validation_annee", schema=None) as batch_op:
|
||
|
batch_op.drop_constraint(
|
||
|
"apc_validation_annee_formation_id_fkey", type_="foreignkey"
|
||
|
)
|
||
|
batch_op.drop_column("formation_id")
|