# -*- mode: python -*- # -*- coding: utf-8 -*- import glob import os import shutil import sys from app.models import Departement from app.models.formsemestre import FormSemestre from app.models.etudiants import Identite def migrate_scodoc7_dept_archives(dept_name=""): if dept_name: depts = Departement.query.filter_by(acronym=dept_name) else: depts = Departement.query for dept in depts: print(f"Migrating {dept.acronym} archives...") # SemsArchiver # /opt/scodoc-data/archives/<dept>/<scodoc7id> -> formsemestre_id migrate_sem_archives(dept) # EtudsArchiver: migrate_docetuds(dept) # ApoCSVArchiver: # /opt/scodoc-data/archives/apo_csv/<dept>/ -> apo_csv/<dept_id>/ migrate_apo_csv(dept) def migrate_sem_archives(dept): "/opt/scodoc-data/archives/<dept>/<scodoc7id> -> formsemestre_id" n = 0 n_moves = 0 for sem in FormSemestre.query.filter_by(dept_id=dept.id): n += 1 arch_dir7 = f"/opt/scodoc-data/archives/{dept.acronym}/{sem.scodoc7_id}" arch_dir9 = f"/opt/scodoc-data/archives/{dept.id}/{sem.id}" if os.path.exists(arch_dir7): n_moves += 1 if not os.path.exists(arch_dir9): # print(f"renaming {arch_dir7} to {arch_dir9}") shutil.move(arch_dir7, arch_dir9) else: # print(f"merging {arch_dir7} with {arch_dir9}") for arch in glob.glob(f"{arch_dir7}/*"): # print(f"\tmoving {arch}") shutil.move(arch, arch_dir9) # print(f"moved {n_moves}/{n} sems") def migrate_docetuds(dept): "/opt/scodoc-data/archives/docetuds/<dept>/<scodoc7_id>/ -> etudid" n = 0 n_moves = 0 for etud in Identite.query.filter_by(dept_id=dept.id): n += 1 arch_dir7 = ( f"/opt/scodoc-data/archives/docetuds/{dept.acronym}/{etud.scodoc7_id}" ) arch_dir9 = f"/opt/scodoc-data/archives/docetuds/{dept.id}/{etud.id}" if os.path.exists(arch_dir7): n_moves += 1 if not os.path.exists(arch_dir9): # print(f"renaming {arch_dir7} to {arch_dir9}") shutil.move(arch_dir7, arch_dir9) else: # print(f"merging {arch_dir7} with {arch_dir9}") for arch in glob.glob(f"{arch_dir7}/*"): # print(f"\tmoving {arch}") shutil.move(arch, arch_dir9) # print(f"moved {n_moves}/{n} etuds") def migrate_apo_csv(dept): "/opt/scodoc-data/archives/apo_csv/<dept>/ -> .../apo_csv/<dept_id>/" arch_dir7 = f"/opt/scodoc-data/archives/apo_csv/{dept.acronym}" arch_dir7_upper = f"/opt/scodoc-data/archives/apo_csv/{dept.acronym.upper()}" arch_dir9 = f"/opt/scodoc-data/archives/apo_csv/{dept.id}" if os.path.exists(arch_dir7): if os.path.exists(arch_dir9): print( f"Warning: {arch_dir9} exist ! not moving {arch_dir7}", file=sys.stderr ) else: shutil.move(arch_dir7, arch_dir9) elif os.path.exists(arch_dir7_upper): if os.path.exists(arch_dir9): print( f"Warning: {arch_dir9} exist ! not moving {arch_dir7_upper}", file=sys.stderr, ) else: shutil.move(arch_dir7_upper, arch_dir9)