forked from ScoDoc/ScoDoc
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
|
from xml.etree import ElementTree
|
||||||
|
|
||||||
import flask
|
import flask
|
||||||
from flask import url_for, g
|
from flask import url_for
|
||||||
from flask import current_app
|
from flask import current_app, g
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
|
|
||||||
from config import Config
|
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
|
"""List all formsemestres matching etape, XML format
|
||||||
DEPRECATED: use formsemestre_list()
|
DEPRECATED: use formsemestre_list()
|
||||||
"""
|
"""
|
||||||
log("Warning: calling deprecated XMLgetFormsemestres")
|
current_app.logger.debug("Warning: calling deprecated XMLgetFormsemestres")
|
||||||
args = {}
|
args = {}
|
||||||
if etape_apo:
|
if etape_apo:
|
||||||
args["etape_apo"] = etape_apo
|
args["etape_apo"] = etape_apo
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- mode: python -*-
|
# -*- mode: python -*-
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
SCOVERSION = "9.0.28"
|
SCOVERSION = "9.0.29"
|
||||||
|
|
||||||
SCONAME = "ScoDoc"
|
SCONAME = "ScoDoc"
|
||||||
|
|
||||||
|
11
scodoc.py
11
scodoc.py
@ -264,6 +264,17 @@ def create_dept(dept): # create-dept
|
|||||||
return 0
|
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()
|
@app.cli.command()
|
||||||
@with_appcontext
|
@with_appcontext
|
||||||
def import_scodoc7_users(): # import-scodoc7-users
|
def import_scodoc7_users(): # import-scodoc7-users
|
||||||
|
@ -65,6 +65,27 @@ else
|
|||||||
SCODOC7_HOME="$1" # racine de l'archive importée
|
SCODOC7_HOME="$1" # racine de l'archive importée
|
||||||
fi
|
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"
|
# --- 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
|
# Bases appartenant à www-data: les attribue à "scodoc" pour le script de migration SQL
|
||||||
# qui tourne en tant que "scodoc"
|
# qui tourne en tant que "scodoc"
|
||||||
@ -160,6 +181,8 @@ migrate_local_files() {
|
|||||||
|
|
||||||
# ------ MAIN
|
# ------ MAIN
|
||||||
|
|
||||||
|
check_existing_depts
|
||||||
|
|
||||||
change_scodoc_file_ownership
|
change_scodoc_file_ownership
|
||||||
|
|
||||||
if [ "$INPLACE" == 1 ]
|
if [ "$INPLACE" == 1 ]
|
||||||
@ -190,10 +213,15 @@ su -c "(cd $SCODOC_DIR && source venv/bin/activate && flask import-scodoc7-users
|
|||||||
|
|
||||||
# ----- Migration bases départements
|
# ----- Migration bases départements
|
||||||
# les départements ScoDoc7 ont été déplacés dans /opt/scodoc-data/config/dept
|
# 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
|
for f in "$SCODOC_VAR_DIR"/config/depts/*.cfg
|
||||||
do
|
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
|
db_name=$(echo "SCO$dept" | tr "[:lower:]" "[:upper:]") # nom de BD toujours en majuscule
|
||||||
echo
|
echo
|
||||||
echo "----------------------------------------------"
|
echo "----------------------------------------------"
|
||||||
|
Loading…
Reference in New Issue
Block a user