forked from ScoDoc/ScoDoc
97 lines
3.3 KiB
Python
97 lines
3.3 KiB
Python
# -*- 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)
|