forked from ScoDoc/DocScoDoc
65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
# -*- mode: python -*-
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""Fix bug #70
|
|
|
|
Utiliser comme:
|
|
scotests/scointeractive.sh DEPT config/fix_bug70_db.py
|
|
|
|
"""
|
|
context = context.Notes # pylint: disable=undefined-variable
|
|
REQUEST = REQUEST # pylint: disable=undefined-variable
|
|
import scotests.sco_fake_gen as sco_fake_gen # pylint: disable=import-error
|
|
import os
|
|
import sys
|
|
import sco_utils
|
|
import notesdb
|
|
import sco_formsemestre
|
|
import sco_formsemestre_edit
|
|
import sco_moduleimpl
|
|
|
|
G = sco_fake_gen.ScoFake(context.Notes)
|
|
|
|
|
|
def fix_formsemestre_formation_bug70(formsemestre_id):
|
|
"""Le bug #70 a pu entrainer des incohérences
|
|
lors du clonage avorté de semestres.
|
|
Cette fonction réassocie le semestre à la formation
|
|
à laquelle appartiennent ses modulesimpls.
|
|
2021-04-23
|
|
"""
|
|
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
|
cursor = notesdb.SimpleQuery(
|
|
context,
|
|
"""SELECT m.formation_id
|
|
FROM notes_modules m, notes_moduleimpl mi
|
|
WHERE mi.module_id = m.module_id
|
|
AND mi.formsemestre_id = %(formsemestre_id)s
|
|
""",
|
|
{"formsemestre_id": formsemestre_id},
|
|
)
|
|
modimpls_formations = set([x[0] for x in cursor])
|
|
if len(modimpls_formations) > 1:
|
|
# this is should not occur
|
|
G.log(
|
|
"Warning: fix_formsemestre_formation_bug70: modules from several formations in sem %s"
|
|
% formsemestre_id
|
|
)
|
|
elif len(modimpls_formations) == 1:
|
|
modimpls_formation_id = modimpls_formations.pop()
|
|
if modimpls_formation_id != sem["formation_id"]:
|
|
# Bug #70: fix
|
|
G.log("fix_formsemestre_formation_bug70: fixing %s" % formsemestre_id)
|
|
sem["formation_id"] = modimpls_formation_id
|
|
context.do_formsemestre_edit(sem, html_quote=False)
|
|
|
|
|
|
formsemestre_ids = [
|
|
x[0]
|
|
for x in notesdb.SimpleQuery(
|
|
context, "SELECT formsemestre_id FROM notes_formsemestre", {}
|
|
)
|
|
]
|
|
for formsemestre_id in formsemestre_ids:
|
|
fix_formsemestre_formation_bug70(formsemestre_id)
|