diff --git a/app/but/jury_but.py b/app/but/jury_but.py index 31367a98e1..97ab95acad 100644 --- a/app/but/jury_but.py +++ b/app/but/jury_but.py @@ -695,7 +695,7 @@ class DecisionsProposeesAnnee(DecisionsProposees): code=code, ) else: # Update validation année BUT - self.validation.etud = self.etud + assert self.validation.etudid == self.etud.id self.validation.formsemestre = self.formsemestre_impair self.validation.formation_id = self.formsemestre.formation_id self.validation.ordre = self.annee_but diff --git a/app/models/but_validations.py b/app/models/but_validations.py index 00dc61952f..997d1a46fd 100644 --- a/app/models/but_validations.py +++ b/app/models/but_validations.py @@ -170,7 +170,9 @@ class ApcValidationAnnee(db.Model): __tablename__ = "apc_validation_annee" # Assure unicité de la décision: - __table_args__ = (db.UniqueConstraint("etudid", "annee_scolaire", "ordre"),) + __table_args__ = ( + db.UniqueConstraint("etudid", "ordre", "formation_id"), + ) # il aurait été plus intelligent de mettre ici le refcomp id = db.Column(db.Integer, primary_key=True) etudid = db.Column( db.Integer, @@ -183,8 +185,8 @@ class ApcValidationAnnee(db.Model): formsemestre_id = db.Column( db.Integer, db.ForeignKey("notes_formsemestre.id"), nullable=True ) - "le semestre origine, normalement l'IMPAIR (le 1er) de l'année" - formation_id = db.Column( + "le semestre IMPAIR (le 1er) de l'année" + formation_id = db.Column( # il aurait été plus intelligent de mettre ici le refcomp db.Integer, db.ForeignKey("notes_formations.id"), nullable=False, diff --git a/migrations/versions/829683efddc4_change_apcvalidationannee.py b/migrations/versions/829683efddc4_change_apcvalidationannee.py new file mode 100644 index 0000000000..8955a1a3df --- /dev/null +++ b/migrations/versions/829683efddc4_change_apcvalidationannee.py @@ -0,0 +1,44 @@ +"""Change ApcValidationAnnee + +Revision ID: 829683efddc4 +Revises: c701224fa255 +Create Date: 2023-06-28 09:47:16.591028 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = "829683efddc4" +down_revision = "c701224fa255" +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("apc_validation_annee", schema=None) as batch_op: + batch_op.drop_constraint( + "apc_validation_annee_etudid_annee_scolaire_ordre_key", type_="unique" + ) + # batch_op.create_unique_constraint( + # "apc_validation_annee_etudid_formation_ordre_key", + # ["etudid", "ordre", "formation_id"], + # ) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("apc_validation_annee", schema=None) as batch_op: + # batch_op.drop_constraint( + # "apc_validation_annee_etudid_formation_ordre_key", type_="unique" + # ) + batch_op.create_unique_constraint( + "apc_validation_annee_etudid_annee_scolaire_ordre_key", + ["etudid", "annee_scolaire", "ordre"], + ) + + # ### end Alembic commands ###