ScoDoc/migrations/versions/993ce4a01d57_scodoc_9_0_3.py

1200 lines
44 KiB
Python

"""ScoDoc 9.0.3
Revision ID: 993ce4a01d57
Revises:
Create Date: 2021-08-27 11:17:55.205910
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "993ce4a01d57"
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
# Added by Emmanuel: ScoDoc SQl functions creation
op.execute(
"""
CREATE SEQUENCE IF NOT EXISTS notes_idgen_fcod;
CREATE OR REPLACE FUNCTION notes_newid_fcod() RETURNS TEXT
AS $$ SELECT 'FCOD' || to_char(nextval('notes_idgen_fcod'), 'FM999999999'); $$
LANGUAGE SQL;
CREATE OR REPLACE FUNCTION notes_newid_ucod() RETURNS TEXT
AS $$ SELECT 'UCOD' || to_char(nextval('notes_idgen_fcod'), 'FM999999999'); $$
LANGUAGE SQL;
CREATE OR REPLACE FUNCTION truncate_tables(username IN VARCHAR) RETURNS void AS $$
DECLARE
statements CURSOR FOR
SELECT tablename FROM pg_tables
WHERE tableowner = username AND schemaname = 'public'
AND tablename <> 'notes_semestres'
AND tablename <> 'notes_form_modalites';
BEGIN
FOR stmt IN statements LOOP
EXECUTE 'TRUNCATE TABLE ' || quote_ident(stmt.tablename) || ' CASCADE;';
END LOOP;
END;
$$ LANGUAGE plpgsql;
-- Fonction pour anonymisation:
-- inspirée par https://www.simononsoftware.com/random-string-in-postgresql/
CREATE OR REPLACE FUNCTION random_text_md5( integer ) returns text
LANGUAGE SQL
AS $$
select upper( substring( (SELECT string_agg(md5(random()::TEXT), '')
FROM generate_series(
1,
CEIL($1 / 32.)::integer)
), 1, $1) );
$$;
"""
)
# ### commands auto generated by Alembic - please adjust! ###
op.create_table(
"departement",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("acronym", sa.String(length=32), nullable=False),
sa.Column("description", sa.Text(), nullable=True),
sa.Column(
"date_creation",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("visible", sa.Boolean(), server_default="true", nullable=False),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_departement_acronym"), "departement", ["acronym"], unique=False
)
op.create_table(
"etud_annotations",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column(
"date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("author", sa.Text(), nullable=True),
sa.Column("comment", sa.Text(), nullable=True),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"itemsuivi_tags",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("title", sa.Text(), nullable=False),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("title"),
)
op.create_table(
"notes_form_modalites",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("modalite", sa.String(length=32), server_default="FI", nullable=True),
sa.Column("titre", sa.Text(), nullable=True),
sa.Column("numero", sa.Integer(), nullable=True),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_notes_form_modalites_modalite"),
"notes_form_modalites",
["modalite"],
unique=True,
)
op.create_table(
"role",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("name", sa.String(length=64), nullable=True),
sa.Column("default", sa.Boolean(), nullable=True),
sa.Column("permissions", sa.BigInteger(), nullable=True),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("name"),
)
op.create_index(op.f("ix_role_default"), "role", ["default"], unique=False)
op.create_table(
"scolog",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column(
"date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("method", sa.Text(), nullable=True),
sa.Column("msg", sa.Text(), nullable=True),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("authenticated_user", sa.Text(), nullable=True),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"user",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("user_name", sa.String(length=64), nullable=True),
sa.Column("email", sa.String(length=120), nullable=True),
sa.Column("nom", sa.String(length=64), nullable=True),
sa.Column("prenom", sa.String(length=64), nullable=True),
sa.Column("dept", sa.String(length=32), nullable=True),
sa.Column("active", sa.Boolean(), nullable=True),
sa.Column("password_hash", sa.String(length=128), nullable=True),
sa.Column("password_scodoc7", sa.String(length=42), nullable=True),
sa.Column("last_seen", sa.DateTime(), nullable=True),
sa.Column("date_modif_passwd", sa.DateTime(), nullable=True),
sa.Column("date_created", sa.DateTime(), nullable=True),
sa.Column("date_expiration", sa.DateTime(), nullable=True),
sa.Column("passwd_temp", sa.Boolean(), nullable=True),
sa.Column("token", sa.String(length=32), nullable=True),
sa.Column("token_expiration", sa.DateTime(), nullable=True),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(op.f("ix_user_active"), "user", ["active"], unique=False)
op.create_index(op.f("ix_user_dept"), "user", ["dept"], unique=False)
op.create_index(op.f("ix_user_token"), "user", ["token"], unique=True)
op.create_index(op.f("ix_user_user_name"), "user", ["user_name"], unique=True)
op.create_table(
"entreprises",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("dept_id", sa.Integer(), nullable=True),
sa.Column("nom", sa.Text(), nullable=True),
sa.Column("adresse", sa.Text(), nullable=True),
sa.Column("ville", sa.Text(), nullable=True),
sa.Column("codepostal", sa.Text(), nullable=True),
sa.Column("pays", sa.Text(), nullable=True),
sa.Column("contact_origine", sa.Text(), nullable=True),
sa.Column("secteur", sa.Text(), nullable=True),
sa.Column("note", sa.Text(), nullable=True),
sa.Column("privee", sa.Text(), nullable=True),
sa.Column("localisation", sa.Text(), nullable=True),
sa.Column("qualite_relation", sa.Integer(), nullable=True),
sa.Column("plus10salaries", sa.Boolean(), nullable=True),
sa.Column(
"date_creation",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.ForeignKeyConstraint(
["dept_id"],
["departement.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_entreprises_dept_id"), "entreprises", ["dept_id"], unique=False
)
op.create_table(
"identite",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("dept_id", sa.Integer(), nullable=True),
sa.Column("nom", sa.Text(), nullable=True),
sa.Column("prenom", sa.Text(), nullable=True),
sa.Column("nom_usuel", sa.Text(), nullable=True),
sa.Column("civilite", sa.String(length=1), nullable=False),
sa.Column("date_naissance", sa.Date(), nullable=True),
sa.Column("lieu_naissance", sa.Text(), nullable=True),
sa.Column("dept_naissance", sa.Text(), nullable=True),
sa.Column("nationalite", sa.Text(), nullable=True),
sa.Column("statut", sa.Text(), nullable=True),
sa.Column("boursier", sa.Boolean(), nullable=True),
sa.Column("photo_filename", sa.Text(), nullable=True),
sa.Column("code_nip", sa.Text(), nullable=True),
sa.Column("code_ine", sa.Text(), nullable=True),
sa.CheckConstraint("civilite IN ('M', 'F', 'X')"),
sa.ForeignKeyConstraint(
["dept_id"],
["departement.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(op.f("ix_identite_dept_id"), "identite", ["dept_id"], unique=False)
op.create_table(
"notes_formations",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("dept_id", sa.Integer(), nullable=True),
sa.Column("acronyme", sa.Text(), nullable=False),
sa.Column("titre", sa.Text(), nullable=False),
sa.Column("titre_officiel", sa.Text(), nullable=False),
sa.Column("version", sa.Integer(), server_default="1", nullable=True),
sa.Column(
"formation_code",
sa.String(length=32),
server_default=sa.text("notes_newid_fcod()"),
nullable=False,
),
sa.Column("type_parcours", sa.Integer(), server_default="0", nullable=True),
sa.Column("code_specialite", sa.String(length=32), nullable=True),
sa.ForeignKeyConstraint(
["dept_id"],
["departement.id"],
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("acronyme", "titre", "version"),
)
op.create_index(
op.f("ix_notes_formations_dept_id"),
"notes_formations",
["dept_id"],
unique=False,
)
op.create_table(
"notes_semset",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("dept_id", sa.Integer(), nullable=True),
sa.Column("title", sa.Text(), nullable=True),
sa.Column("annee_scolaire", sa.Integer(), nullable=True),
sa.Column("sem_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["dept_id"],
["departement.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"notes_tags",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("dept_id", sa.Integer(), nullable=True),
sa.Column("title", sa.Text(), nullable=False),
sa.ForeignKeyConstraint(
["dept_id"],
["departement.id"],
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("title", "dept_id"),
)
op.create_index(
op.f("ix_notes_tags_dept_id"), "notes_tags", ["dept_id"], unique=False
)
op.create_table(
"scolar_news",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("dept_id", sa.Integer(), nullable=True),
sa.Column(
"date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("authenticated_user", sa.Text(), nullable=True),
sa.Column("type", sa.String(length=32), nullable=True),
sa.Column("object", sa.Integer(), nullable=True),
sa.Column("text", sa.Text(), nullable=True),
sa.Column("url", sa.Text(), nullable=True),
sa.ForeignKeyConstraint(
["dept_id"],
["departement.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_scolar_news_dept_id"), "scolar_news", ["dept_id"], unique=False
)
op.create_table(
"user_role",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("user_id", sa.Integer(), nullable=True),
sa.Column("role_id", sa.Integer(), nullable=True),
sa.Column("dept", sa.String(length=64), nullable=True),
sa.ForeignKeyConstraint(
["role_id"],
["role.id"],
),
sa.ForeignKeyConstraint(
["user_id"],
["user.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"admissions",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("annee", sa.Integer(), nullable=True),
sa.Column("bac", sa.Text(), nullable=True),
sa.Column("specialite", sa.Text(), nullable=True),
sa.Column("annee_bac", sa.Integer(), nullable=True),
sa.Column("math", sa.Text(), nullable=True),
sa.Column("physique", sa.Float(), nullable=True),
sa.Column("anglais", sa.Float(), nullable=True),
sa.Column("francais", sa.Float(), nullable=True),
sa.Column("rang", sa.Integer(), nullable=True),
sa.Column("qualite", sa.Float(), nullable=True),
sa.Column("rapporteur", sa.Text(), nullable=True),
sa.Column("decision", sa.Text(), nullable=True),
sa.Column("score", sa.Float(), nullable=True),
sa.Column("commentaire", sa.Text(), nullable=True),
sa.Column("nomlycee", sa.Text(), nullable=True),
sa.Column("villelycee", sa.Text(), nullable=True),
sa.Column("codepostallycee", sa.Text(), nullable=True),
sa.Column("codelycee", sa.Text(), nullable=True),
sa.Column("type_admission", sa.Text(), nullable=True),
sa.Column("boursier_prec", sa.Boolean(), nullable=True),
sa.Column("classement", sa.Integer(), nullable=True),
sa.Column("apb_groupe", sa.Text(), nullable=True),
sa.Column("apb_classement_gr", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"adresse",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("email", sa.Text(), nullable=True),
sa.Column("emailperso", sa.Text(), nullable=True),
sa.Column("domicile", sa.Text(), nullable=True),
sa.Column("codepostaldomicile", sa.Text(), nullable=True),
sa.Column("villedomicile", sa.Text(), nullable=True),
sa.Column("paysdomicile", sa.Text(), nullable=True),
sa.Column("telephone", sa.Text(), nullable=True),
sa.Column("telephonemobile", sa.Text(), nullable=True),
sa.Column("fax", sa.Text(), nullable=True),
sa.Column("typeadresse", sa.Text(), server_default="domicile", nullable=False),
sa.Column("description", sa.Text(), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"billet_absence",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("abs_begin", sa.DateTime(timezone=True), nullable=True),
sa.Column("abs_end", sa.DateTime(timezone=True), nullable=True),
sa.Column("description", sa.Text(), nullable=True),
sa.Column("etat", sa.Boolean(), server_default="false", nullable=True),
sa.Column(
"entry_date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("justified", sa.Boolean(), server_default="false", nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_billet_absence_etudid"), "billet_absence", ["etudid"], unique=False
)
op.create_table(
"entreprise_correspondant",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("entreprise_id", sa.Integer(), nullable=True),
sa.Column("nom", sa.Text(), nullable=True),
sa.Column("prenom", sa.Text(), nullable=True),
sa.Column("civilite", sa.Text(), nullable=True),
sa.Column("fonction", sa.Text(), nullable=True),
sa.Column("phone1", sa.Text(), nullable=True),
sa.Column("phone2", sa.Text(), nullable=True),
sa.Column("mobile", sa.Text(), nullable=True),
sa.Column("mail1", sa.Text(), nullable=True),
sa.Column("mail2", sa.Text(), nullable=True),
sa.Column("fax", sa.Text(), nullable=True),
sa.Column("note", sa.Text(), nullable=True),
sa.ForeignKeyConstraint(
["entreprise_id"],
["entreprises.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"itemsuivi",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column(
"item_date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("situation", sa.Text(), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"notes_formsemestre",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("dept_id", sa.Integer(), nullable=True),
sa.Column("formation_id", sa.Integer(), nullable=True),
sa.Column("semestre_id", sa.Integer(), server_default="1", nullable=False),
sa.Column("titre", sa.Text(), nullable=True),
sa.Column("date_debut", sa.Date(), nullable=True),
sa.Column("date_fin", sa.Date(), nullable=True),
sa.Column("etat", sa.Boolean(), server_default="true", nullable=False),
sa.Column("modalite", sa.String(length=32), nullable=True),
sa.Column(
"gestion_compensation", sa.Boolean(), server_default="false", nullable=False
),
sa.Column("bul_hide_xml", sa.Boolean(), server_default="false", nullable=False),
sa.Column(
"gestion_semestrielle", sa.Boolean(), server_default="false", nullable=False
),
sa.Column(
"bul_bgcolor", sa.String(length=32), server_default="white", nullable=True
),
sa.Column(
"resp_can_edit", sa.Boolean(), server_default="false", nullable=False
),
sa.Column(
"resp_can_change_ens", sa.Boolean(), server_default="true", nullable=False
),
sa.Column(
"ens_can_edit_eval", sa.Boolean(), server_default="False", nullable=False
),
sa.Column("elt_sem_apo", sa.Text(), nullable=True),
sa.Column("elt_annee_apo", sa.Text(), nullable=True),
sa.ForeignKeyConstraint(
["dept_id"],
["departement.id"],
),
sa.ForeignKeyConstraint(
["formation_id"],
["notes_formations.id"],
),
sa.ForeignKeyConstraint(
["modalite"],
["notes_form_modalites.modalite"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_notes_formsemestre_dept_id"),
"notes_formsemestre",
["dept_id"],
unique=False,
)
op.create_table(
"notes_notes_log",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("evaluation_id", sa.Integer(), nullable=True),
sa.Column("value", sa.Float(), nullable=True),
sa.Column("comment", sa.Text(), nullable=True),
sa.Column(
"date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("uid", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.ForeignKeyConstraint(
["uid"],
["user.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_notes_notes_log_evaluation_id"),
"notes_notes_log",
["evaluation_id"],
unique=False,
)
op.create_table(
"notes_ue",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("formation_id", sa.Integer(), nullable=True),
sa.Column("acronyme", sa.Text(), nullable=False),
sa.Column("numero", sa.Integer(), nullable=True),
sa.Column("titre", sa.Text(), nullable=True),
sa.Column("type", sa.Integer(), server_default="0", nullable=True),
sa.Column(
"ue_code",
sa.String(length=32),
server_default=sa.text("notes_newid_ucod()"),
nullable=False,
),
sa.Column("ects", sa.Float(), nullable=True),
sa.Column("is_external", sa.Boolean(), server_default="false", nullable=True),
sa.Column("code_apogee", sa.String(length=16), nullable=True),
sa.Column("coefficient", sa.Float(), nullable=True),
sa.ForeignKeyConstraint(
["formation_id"],
["notes_formations.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"absences_notifications",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column(
"notification_date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("email", sa.Text(), nullable=True),
sa.Column("nbabs", sa.Integer(), nullable=True),
sa.Column("nbabsjust", sa.Integer(), nullable=True),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"entreprise_contact",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("date", sa.DateTime(timezone=True), nullable=True),
sa.Column("type_contact", sa.Text(), nullable=True),
sa.Column("entreprise_id", sa.Integer(), nullable=True),
sa.Column("entreprise_corresp_id", sa.Integer(), nullable=True),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("description", sa.Text(), nullable=True),
sa.Column("enseignant", sa.Text(), nullable=True),
sa.ForeignKeyConstraint(
["entreprise_corresp_id"],
["entreprise_correspondant.id"],
),
sa.ForeignKeyConstraint(
["entreprise_id"],
["entreprises.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"itemsuivi_tags_assoc",
sa.Column("tag_id", sa.Integer(), nullable=True),
sa.Column("itemsuivi_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["itemsuivi_id"],
["itemsuivi.id"],
),
sa.ForeignKeyConstraint(
["tag_id"],
["itemsuivi_tags.id"],
),
)
op.create_table(
"notes_appreciations",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column(
"date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("author", sa.Text(), nullable=True),
sa.Column("comment", sa.Text(), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_notes_appreciations_etudid"),
"notes_appreciations",
["etudid"],
unique=False,
)
op.create_table(
"notes_formsemestre_custommenu",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("title", sa.Text(), nullable=True),
sa.Column("url", sa.Text(), nullable=True),
sa.Column("idx", sa.Integer(), server_default="0", nullable=True),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"notes_formsemestre_etapes",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("etape_apo", sa.String(length=16), nullable=True),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"notes_formsemestre_inscription",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("etat", sa.String(length=16), nullable=True),
sa.Column("etape", sa.String(length=16), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("formsemestre_id", "etudid"),
)
op.create_table(
"notes_formsemestre_responsables",
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("responsable_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.ForeignKeyConstraint(
["responsable_id"],
["user.id"],
),
)
op.create_table(
"notes_formsemestre_ue_computation_expr",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("ue_id", sa.Integer(), nullable=True),
sa.Column("computation_expr", sa.Text(), nullable=True),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.ForeignKeyConstraint(
["ue_id"],
["notes_ue.id"],
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("formsemestre_id", "ue_id"),
)
op.create_table(
"notes_formsemestre_uecoef",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("ue_id", sa.Integer(), nullable=True),
sa.Column("coefficient", sa.Float(), nullable=False),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.ForeignKeyConstraint(
["ue_id"],
["notes_ue.id"],
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("formsemestre_id", "ue_id"),
)
op.create_table(
"notes_matieres",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("ue_id", sa.Integer(), nullable=True),
sa.Column("titre", sa.Text(), nullable=True),
sa.Column("numero", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["ue_id"],
["notes_ue.id"],
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("ue_id", "titre"),
)
op.create_table(
"notes_semset_formsemestre",
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("semset_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.ForeignKeyConstraint(
["semset_id"],
["notes_semset.id"],
),
sa.UniqueConstraint("formsemestre_id", "semset_id"),
)
op.create_table(
"partition",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("partition_name", sa.String(length=32), nullable=True),
sa.Column("numero", sa.Integer(), nullable=True),
sa.Column(
"bul_show_rank", sa.Boolean(), server_default="false", nullable=False
),
sa.Column("show_in_lists", sa.Boolean(), server_default="true", nullable=False),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("formsemestre_id", "partition_name"),
)
op.create_index(
op.f("ix_partition_formsemestre_id"),
"partition",
["formsemestre_id"],
unique=False,
)
op.create_table(
"sco_prefs",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("dept_id", sa.Integer(), nullable=True),
sa.Column("name", sa.String(length=128), nullable=False),
sa.Column("value", sa.Text(), nullable=True),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["dept_id"],
["departement.id"],
),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(op.f("ix_sco_prefs_name"), "sco_prefs", ["name"], unique=False)
op.create_table(
"scolar_autorisation_inscription",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("formation_code", sa.String(length=32), nullable=False),
sa.Column("semestre_id", sa.Integer(), nullable=True),
sa.Column(
"date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("origin_formsemestre_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.ForeignKeyConstraint(
["origin_formsemestre_id"],
["notes_formsemestre.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"scolar_events",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column(
"event_date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("ue_id", sa.Integer(), nullable=True),
sa.Column("event_type", sa.String(length=32), nullable=True),
sa.Column("comp_formsemestre_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["comp_formsemestre_id"],
["notes_formsemestre.id"],
),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.ForeignKeyConstraint(
["ue_id"],
["notes_ue.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"scolar_formsemestre_validation",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("ue_id", sa.Integer(), nullable=True),
sa.Column("code", sa.String(length=16), nullable=False),
sa.Column("assidu", sa.Boolean(), nullable=True),
sa.Column(
"event_date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("compense_formsemestre_id", sa.Integer(), nullable=True),
sa.Column("moy_ue", sa.Float(), nullable=True),
sa.Column("semestre_id", sa.Integer(), nullable=True),
sa.Column("is_external", sa.Boolean(), server_default="false", nullable=True),
sa.ForeignKeyConstraint(
["compense_formsemestre_id"],
["notes_formsemestre.id"],
),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.ForeignKeyConstraint(
["ue_id"],
["notes_ue.id"],
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("etudid", "formsemestre_id", "ue_id"),
)
op.create_table(
"group_descr",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("partition_id", sa.Integer(), nullable=True),
sa.Column("group_name", sa.String(length=64), nullable=True),
sa.ForeignKeyConstraint(
["partition_id"],
["partition.id"],
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("partition_id", "group_name"),
)
op.create_table(
"notes_modules",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("titre", sa.Text(), nullable=True),
sa.Column("abbrev", sa.Text(), nullable=True),
sa.Column("code", sa.String(length=32), nullable=False),
sa.Column("heures_cours", sa.Float(), nullable=True),
sa.Column("heures_td", sa.Float(), nullable=True),
sa.Column("heures_tp", sa.Float(), nullable=True),
sa.Column("coefficient", sa.Float(), nullable=True),
sa.Column("ects", sa.Float(), nullable=True),
sa.Column("ue_id", sa.Integer(), nullable=True),
sa.Column("formation_id", sa.Integer(), nullable=True),
sa.Column("matiere_id", sa.Integer(), nullable=True),
sa.Column("semestre_id", sa.Integer(), server_default="1", nullable=False),
sa.Column("numero", sa.Integer(), nullable=True),
sa.Column("code_apogee", sa.String(length=16), nullable=True),
sa.Column("module_type", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["formation_id"],
["notes_formations.id"],
),
sa.ForeignKeyConstraint(
["matiere_id"],
["notes_matieres.id"],
),
sa.ForeignKeyConstraint(
["ue_id"],
["notes_ue.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_notes_modules_ue_id"), "notes_modules", ["ue_id"], unique=False
)
op.create_table(
"group_membership",
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("group_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.ForeignKeyConstraint(
["group_id"],
["group_descr.id"],
),
sa.UniqueConstraint("etudid", "group_id"),
)
op.create_table(
"notes_moduleimpl",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("module_id", sa.Integer(), nullable=True),
sa.Column("formsemestre_id", sa.Integer(), nullable=True),
sa.Column("responsable_id", sa.Integer(), nullable=True),
sa.Column("computation_expr", sa.Text(), nullable=True),
sa.ForeignKeyConstraint(
["formsemestre_id"],
["notes_formsemestre.id"],
),
sa.ForeignKeyConstraint(
["module_id"],
["notes_modules.id"],
),
sa.ForeignKeyConstraint(
["responsable_id"],
["user.id"],
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("formsemestre_id", "module_id"),
)
op.create_index(
op.f("ix_notes_moduleimpl_formsemestre_id"),
"notes_moduleimpl",
["formsemestre_id"],
unique=False,
)
op.create_table(
"notes_modules_tags",
sa.Column("tag_id", sa.Integer(), nullable=True),
sa.Column("module_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["module_id"],
["notes_modules.id"],
),
sa.ForeignKeyConstraint(
["tag_id"],
["notes_tags.id"],
),
)
op.create_table(
"absences",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("jour", sa.Date(), nullable=True),
sa.Column("estabs", sa.Boolean(), nullable=True),
sa.Column("estjust", sa.Boolean(), nullable=True),
sa.Column("matin", sa.Boolean(), nullable=True),
sa.Column("description", sa.Text(), nullable=True),
sa.Column(
"entry_date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("moduleimpl_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.ForeignKeyConstraint(
["moduleimpl_id"],
["notes_moduleimpl.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(op.f("ix_absences_etudid"), "absences", ["etudid"], unique=False)
op.create_table(
"notes_evaluation",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("moduleimpl_id", sa.Integer(), nullable=True),
sa.Column("jour", sa.Date(), nullable=True),
sa.Column("heure_debut", sa.Time(), nullable=True),
sa.Column("heure_fin", sa.Time(), nullable=True),
sa.Column("description", sa.Text(), nullable=True),
sa.Column("note_max", sa.Float(), nullable=True),
sa.Column("coefficient", sa.Float(), nullable=True),
sa.Column("visibulletin", sa.Boolean(), server_default="true", nullable=False),
sa.Column(
"publish_incomplete", sa.Boolean(), server_default="false", nullable=False
),
sa.Column("evaluation_type", sa.Integer(), server_default="0", nullable=False),
sa.Column("numero", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["moduleimpl_id"],
["notes_moduleimpl.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_notes_evaluation_moduleimpl_id"),
"notes_evaluation",
["moduleimpl_id"],
unique=False,
)
op.create_table(
"notes_moduleimpl_inscription",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("moduleimpl_id", sa.Integer(), nullable=True),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.ForeignKeyConstraint(
["moduleimpl_id"],
["notes_moduleimpl.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_notes_moduleimpl_inscription_etudid"),
"notes_moduleimpl_inscription",
["etudid"],
unique=False,
)
op.create_index(
op.f("ix_notes_moduleimpl_inscription_moduleimpl_id"),
"notes_moduleimpl_inscription",
["moduleimpl_id"],
unique=False,
)
op.create_table(
"notes_modules_enseignants",
sa.Column("moduleimpl_id", sa.Integer(), nullable=True),
sa.Column("ens_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["ens_id"],
["user.id"],
),
sa.ForeignKeyConstraint(
["moduleimpl_id"],
["notes_moduleimpl.id"],
),
)
op.create_table(
"notes_notes",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("etudid", sa.Integer(), nullable=True),
sa.Column("evaluation_id", sa.Integer(), nullable=True),
sa.Column("value", sa.Float(), nullable=True),
sa.Column("comment", sa.Text(), nullable=True),
sa.Column(
"date",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
nullable=True,
),
sa.Column("uid", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["etudid"],
["identite.id"],
),
sa.ForeignKeyConstraint(
["evaluation_id"],
["notes_evaluation.id"],
),
sa.ForeignKeyConstraint(
["uid"],
["user.id"],
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("etudid", "evaluation_id"),
)
op.create_index(
op.f("ix_notes_notes_evaluation_id"),
"notes_notes",
["evaluation_id"],
unique=False,
)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_index(op.f("ix_notes_notes_evaluation_id"), table_name="notes_notes")
op.drop_table("notes_notes")
op.drop_table("notes_modules_enseignants")
op.drop_index(
op.f("ix_notes_moduleimpl_inscription_moduleimpl_id"),
table_name="notes_moduleimpl_inscription",
)
op.drop_index(
op.f("ix_notes_moduleimpl_inscription_etudid"),
table_name="notes_moduleimpl_inscription",
)
op.drop_table("notes_moduleimpl_inscription")
op.drop_index(
op.f("ix_notes_evaluation_moduleimpl_id"), table_name="notes_evaluation"
)
op.drop_table("notes_evaluation")
op.drop_index(op.f("ix_absences_etudid"), table_name="absences")
op.drop_table("absences")
op.drop_table("notes_modules_tags")
op.drop_index(
op.f("ix_notes_moduleimpl_formsemestre_id"), table_name="notes_moduleimpl"
)
op.drop_table("notes_moduleimpl")
op.drop_table("group_membership")
op.drop_index(op.f("ix_notes_modules_ue_id"), table_name="notes_modules")
op.drop_table("notes_modules")
op.drop_table("group_descr")
op.drop_table("scolar_formsemestre_validation")
op.drop_table("scolar_events")
op.drop_table("scolar_autorisation_inscription")
op.drop_index(op.f("ix_sco_prefs_name"), table_name="sco_prefs")
op.drop_table("sco_prefs")
op.drop_index(op.f("ix_partition_formsemestre_id"), table_name="partition")
op.drop_table("partition")
op.drop_table("notes_semset_formsemestre")
op.drop_table("notes_matieres")
op.drop_table("notes_formsemestre_uecoef")
op.drop_table("notes_formsemestre_ue_computation_expr")
op.drop_table("notes_formsemestre_responsables")
op.drop_table("notes_formsemestre_inscription")
op.drop_table("notes_formsemestre_etapes")
op.drop_table("notes_formsemestre_custommenu")
op.drop_index(
op.f("ix_notes_appreciations_etudid"), table_name="notes_appreciations"
)
op.drop_table("notes_appreciations")
op.drop_table("itemsuivi_tags_assoc")
op.drop_table("entreprise_contact")
op.drop_table("absences_notifications")
op.drop_table("notes_ue")
op.drop_index(
op.f("ix_notes_notes_log_evaluation_id"), table_name="notes_notes_log"
)
op.drop_table("notes_notes_log")
op.drop_index(
op.f("ix_notes_formsemestre_dept_id"), table_name="notes_formsemestre"
)
op.drop_table("notes_formsemestre")
op.drop_table("itemsuivi")
op.drop_table("entreprise_correspondant")
op.drop_index(op.f("ix_billet_absence_etudid"), table_name="billet_absence")
op.drop_table("billet_absence")
op.drop_table("adresse")
op.drop_table("admissions")
op.drop_table("user_role")
op.drop_index(op.f("ix_scolar_news_dept_id"), table_name="scolar_news")
op.drop_table("scolar_news")
op.drop_index(op.f("ix_notes_tags_dept_id"), table_name="notes_tags")
op.drop_table("notes_tags")
op.drop_table("notes_semset")
op.drop_index(op.f("ix_notes_formations_dept_id"), table_name="notes_formations")
op.drop_table("notes_formations")
op.drop_index(op.f("ix_identite_dept_id"), table_name="identite")
op.drop_table("identite")
op.drop_index(op.f("ix_entreprises_dept_id"), table_name="entreprises")
op.drop_table("entreprises")
op.drop_index(op.f("ix_user_user_name"), table_name="user")
op.drop_index(op.f("ix_user_token"), table_name="user")
op.drop_index(op.f("ix_user_dept"), table_name="user")
op.drop_index(op.f("ix_user_active"), table_name="user")
op.drop_table("user")
op.drop_table("scolog")
op.drop_index(op.f("ix_role_default"), table_name="role")
op.drop_table("role")
op.drop_index(
op.f("ix_notes_form_modalites_modalite"), table_name="notes_form_modalites"
)
op.drop_table("notes_form_modalites")
op.drop_table("itemsuivi_tags")
op.drop_table("etud_annotations")
op.drop_index(op.f("ix_departement_acronym"), table_name="departement")
op.drop_table("departement")
# ### end Alembic commands ###