Script migration: vérification existence departements dans base cible
This commit is contained in:
parent
7d59b52018
commit
45352d9248
@ -38,8 +38,8 @@ from operator import itemgetter
|
||||
from xml.etree import ElementTree
|
||||
|
||||
import flask
|
||||
from flask import url_for, g
|
||||
from flask import current_app
|
||||
from flask import url_for
|
||||
from flask import current_app, g
|
||||
from flask_login import current_user
|
||||
|
||||
from config import Config
|
||||
@ -637,7 +637,7 @@ def XMLgetFormsemestres(etape_apo=None, formsemestre_id=None, REQUEST=None):
|
||||
"""List all formsemestres matching etape, XML format
|
||||
DEPRECATED: use formsemestre_list()
|
||||
"""
|
||||
log("Warning: calling deprecated XMLgetFormsemestres")
|
||||
current_app.logger.debug("Warning: calling deprecated XMLgetFormsemestres")
|
||||
args = {}
|
||||
if etape_apo:
|
||||
args["etape_apo"] = etape_apo
|
||||
|
@ -1,7 +1,7 @@
|
||||
# -*- mode: python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
SCOVERSION = "9.0.28"
|
||||
SCOVERSION = "9.0.29"
|
||||
|
||||
SCONAME = "ScoDoc"
|
||||
|
||||
|
11
scodoc.py
11
scodoc.py
@ -264,6 +264,17 @@ def create_dept(dept): # create-dept
|
||||
return 0
|
||||
|
||||
|
||||
@app.cli.command()
|
||||
@click.argument("depts", nargs=-1)
|
||||
def list_depts(depts=""): # list-dept
|
||||
"""If dept exists, print it, else nothing.
|
||||
Called without arguments, list all depts along with their ids.
|
||||
"""
|
||||
for dept in models.Departement.query.order_by(models.Departement.id):
|
||||
if not depts or dept.acronym in depts:
|
||||
print(f"{dept.id}\t{dept.acronym}")
|
||||
|
||||
|
||||
@app.cli.command()
|
||||
@with_appcontext
|
||||
def import_scodoc7_users(): # import-scodoc7-users
|
||||
|
@ -65,6 +65,27 @@ else
|
||||
SCODOC7_HOME="$1" # racine de l'archive importée
|
||||
fi
|
||||
|
||||
# --- 1. Vérifie qu'aucun des départements à importer n'existe déjà
|
||||
check_existing_depts() {
|
||||
sco7_depts=""
|
||||
for f in "${SCODOC7_HOME}/var/scodoc/"/config/depts/*.cfg
|
||||
do
|
||||
dept=$(basename "${f%.*}") # le nom du dept peut-être en minuscules
|
||||
sco9_name=$(echo "$dept" | tr "[:lower:]" "[:upper:]") # acronym ScoDoc 9 toujours en majuscule
|
||||
sco7_depts="$sco7_depts $sco9_name"
|
||||
done
|
||||
nb_existing=$(echo "$sco7_depts" | su -c "cd $SCODOC_DIR && source venv/bin/activate && xargs flask list-depts" "$SCODOC_USER" | wc -l)
|
||||
if [ "$nb_existing" -gt 0 ]
|
||||
then
|
||||
echo "Attention: il existe déjà $nb_existing départements de même nom que celles"
|
||||
echo "que vous souhaitez importer !"
|
||||
echo "Département qui allaient être importées: $sco7_depts"
|
||||
echo "=> arrêt."
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# --- 2. Propriétaire des bases de données pour import "en place"
|
||||
# Bases appartenant à www-data: les attribue à "scodoc" pour le script de migration SQL
|
||||
# qui tourne en tant que "scodoc"
|
||||
@ -160,6 +181,8 @@ migrate_local_files() {
|
||||
|
||||
# ------ MAIN
|
||||
|
||||
check_existing_depts
|
||||
|
||||
change_scodoc_file_ownership
|
||||
|
||||
if [ "$INPLACE" == 1 ]
|
||||
@ -190,10 +213,15 @@ su -c "(cd $SCODOC_DIR && source venv/bin/activate && flask import-scodoc7-users
|
||||
|
||||
# ----- Migration bases départements
|
||||
# les départements ScoDoc7 ont été déplacés dans /opt/scodoc-data/config/dept
|
||||
# (ils ne sont d'ailleurs plus utilisés par ScoDoc 9)
|
||||
# (ils ne sont plus utilisés par ScoDoc 9)
|
||||
# Le nom du dept peut-être en minuscules et/ou majuscules (Geii, GEII...)
|
||||
# Le nom de BD ScoDoc7 est toujours en majuscules (SCOGEII)
|
||||
# Rappel: les archives ScoDoc7 étaient .../archives/<dept_name>/... donc minuscules/majuscules
|
||||
# alors qu'en ScoDoc9 elles seront .../archives/<dept_id>/ : le numéro interne du département,
|
||||
# puisque l'acronyme peut changer.
|
||||
for f in "$SCODOC_VAR_DIR"/config/depts/*.cfg
|
||||
do
|
||||
dept=$(basename "${f%.*}") # le nom du dept peut-être en minuscules et/ou majuscules (geii, GEII...)
|
||||
dept=$(basename "${f%.*}") # le nom du dept peut-être en minuscules
|
||||
db_name=$(echo "SCO$dept" | tr "[:lower:]" "[:upper:]") # nom de BD toujours en majuscule
|
||||
echo
|
||||
echo "----------------------------------------------"
|
||||
|
Loading…
Reference in New Issue
Block a user