From 01dcd8cccda5d953f462f67a11b60f2527739ef1 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Tue, 18 Jan 2022 21:38:00 +0100 Subject: [PATCH] =?UTF-8?q?Migration:=20tol=C3=A8re=20dates=20logs=20aberr?= =?UTF-8?q?antes,=20et=20=C3=A9limine=20relations=20manquantes=20dans=20en?= =?UTF-8?q?treprises?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scodoc.py | 30 +++++++++++++++++++++++------- tools/import_scodoc7_dept.py | 8 +++++++- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/scodoc.py b/scodoc.py index 03f656a7c..976443a3e 100755 --- a/scodoc.py +++ b/scodoc.py @@ -278,20 +278,36 @@ def user_role(username, dept_acronym=None, add_role_name=None, remove_role_name= db.session.commit() +def abort_if_false(ctx, param, value): + if not value: + ctx.abort() + + @app.cli.command() +@click.option( + "--yes", + is_flag=True, + callback=abort_if_false, + expose_value=False, + prompt=f"""Attention: Cela va effacer toutes les données du département + (étudiants, notes, formations, etc) + Voulez-vous vraiment continuer ? + """, +) @click.argument("dept") def delete_dept(dept): # delete-dept """Delete existing departement""" from app.scodoc import notesdb as ndb from app.scodoc import sco_dept - click.confirm( - f"""Attention: Cela va effacer toutes les données du département {dept} - (étudiants, notes, formations, etc) - Voulez-vous vraiment continuer ? - """, - abort=True, - ) + if False: + click.confirm( + f"""Attention: Cela va effacer toutes les données du département {dept} + (étudiants, notes, formations, etc) + Voulez-vous vraiment continuer ? + """, + abort=True, + ) db.reflect() ndb.open_db_connection() d = models.Departement.query.filter_by(acronym=dept).first() diff --git a/tools/import_scodoc7_dept.py b/tools/import_scodoc7_dept.py index 597b9baf6..75f5e9a3b 100644 --- a/tools/import_scodoc7_dept.py +++ b/tools/import_scodoc7_dept.py @@ -170,6 +170,11 @@ def import_scodoc7_dept(dept_id: str, dept_db_uri=None): logging.info(f"connecting to database {dept_db_uri}") cnx = psycopg2.connect(dept_db_uri) cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor) + # FIX : des dates aberrantes (dans le futur) peuvent tenir en SQL mais pas en Python + cursor.execute( + """UPDATE scolar_events SET event_date='2021-09-30' WHERE event_date > '2200-01-01'""" + ) + cnx.commit() # Create dept: dept = models.Departement(acronym=dept_id, description="migré de ScoDoc7") db.session.add(dept) @@ -374,6 +379,8 @@ def convert_object( new_ref = id_from_scodoc7[old_ref] elif (not is_table) and table_name in { "scolog", + "entreprise_correspondant", + "entreprise_contact", "etud_annotations", "notes_notes_log", "scolar_news", @@ -389,7 +396,6 @@ def convert_object( new_ref = None elif is_table and table_name in { "notes_semset_formsemestre", - "entreprise_contact", }: # pour anciennes installs où des relations n'avait pas été déclarées clés étrangères # eg: notes_semset_formsemestre.semset_id n'était pas une clé