forked from ScoDoc/ScoDoc
petits bugs variés
This commit is contained in:
parent
1b2813d7d2
commit
1d1513f782
@ -129,12 +129,6 @@ def permission_required(permission):
|
|||||||
@wraps(f)
|
@wraps(f)
|
||||||
def decorated_function(*args, **kwargs):
|
def decorated_function(*args, **kwargs):
|
||||||
# current_app.logger.info("PERMISSION; kwargs=%s" % str(kwargs))
|
# current_app.logger.info("PERMISSION; kwargs=%s" % str(kwargs))
|
||||||
if "scodoc_dept" in kwargs:
|
|
||||||
g.scodoc_dept = kwargs["scodoc_dept"]
|
|
||||||
del kwargs["scodoc_dept"]
|
|
||||||
# current_app.logger.info(
|
|
||||||
# "permission_required: %s in %s" % (permission, g.scodoc_dept)
|
|
||||||
# )
|
|
||||||
scodoc_dept = getattr(g, "scodoc_dept", None)
|
scodoc_dept = getattr(g, "scodoc_dept", None)
|
||||||
if not current_user.has_permission(permission, scodoc_dept):
|
if not current_user.has_permission(permission, scodoc_dept):
|
||||||
abort(403)
|
abort(403)
|
||||||
@ -153,7 +147,6 @@ def admin_required(f):
|
|||||||
|
|
||||||
def scodoc7func(context):
|
def scodoc7func(context):
|
||||||
"""Décorateur pour intégrer les fonctions Zope 2 de ScoDoc 7.
|
"""Décorateur pour intégrer les fonctions Zope 2 de ScoDoc 7.
|
||||||
Si on a un kwarg `scodoc_dept`(venant de la route), le stocke dans `g.scodoc_dept`.
|
|
||||||
Ajoute l'argument REQUEST s'il est dans la signature de la fonction.
|
Ajoute l'argument REQUEST s'il est dans la signature de la fonction.
|
||||||
Les paramètres de la query string deviennent des (keywords) paramètres de la fonction.
|
Les paramètres de la query string deviennent des (keywords) paramètres de la fonction.
|
||||||
"""
|
"""
|
||||||
|
@ -161,10 +161,11 @@ def formsemestre_bulletinetud_dict(
|
|||||||
if I["etud"]["inscription_formsemestre_id"]:
|
if I["etud"]["inscription_formsemestre_id"]:
|
||||||
I[
|
I[
|
||||||
"descr_situation_html"
|
"descr_situation_html"
|
||||||
] = """<a href="formsemestre_status?formsemestre_id=%s">%s</a>""" % (
|
] = f"""<a href="{url_for(
|
||||||
I["etud"]["inscription_formsemestre_id"],
|
"notes.formsemestre_status",
|
||||||
I["descr_situation"],
|
scodoc_dept=g.scodoc_dept,
|
||||||
)
|
formsemestre_id=I["etud"]["inscription_formsemestre_id"],
|
||||||
|
)}">{I["descr_situation"]}</a>"""
|
||||||
else:
|
else:
|
||||||
I["descr_situation_html"] = I["descr_situation"]
|
I["descr_situation_html"] = I["descr_situation"]
|
||||||
# Groupes:
|
# Groupes:
|
||||||
@ -811,8 +812,11 @@ def formsemestre_bulletinetud(
|
|||||||
H.append("""<p>Situation actuelle: """)
|
H.append("""<p>Situation actuelle: """)
|
||||||
if etud["inscription_formsemestre_id"]:
|
if etud["inscription_formsemestre_id"]:
|
||||||
H.append(
|
H.append(
|
||||||
"""<a class="stdlink" href="formsemestre_status?formsemestre_id=%s">"""
|
f"""<a class="stdlink" href="{url_for(
|
||||||
% etud["inscription_formsemestre_id"]
|
"notes.formsemestre_status",
|
||||||
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=etud["inscription_formsemestre_id"])
|
||||||
|
}">"""
|
||||||
)
|
)
|
||||||
H.append(etud["inscriptionstr"])
|
H.append(etud["inscriptionstr"])
|
||||||
if etud["inscription_formsemestre_id"]:
|
if etud["inscription_formsemestre_id"]:
|
||||||
@ -1054,8 +1058,11 @@ def _formsemestre_bulletinetud_header_html(
|
|||||||
"""
|
"""
|
||||||
<form name="f" method="GET" action="%s">"""
|
<form name="f" method="GET" action="%s">"""
|
||||||
% REQUEST.URL0,
|
% REQUEST.URL0,
|
||||||
"""Bulletin <span class="bull_liensemestre"><a href="formsemestre_status?formsemestre_id=%(formsemestre_id)s">
|
f"""Bulletin <span class="bull_liensemestre"><a href="{
|
||||||
%(titremois)s</a></span>
|
url_for("notes.formsemestre_status",
|
||||||
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=sem["formsemestre_id"])}
|
||||||
|
">{sem["titremois"]}</a></span>
|
||||||
<br/>"""
|
<br/>"""
|
||||||
% sem,
|
% sem,
|
||||||
"""<table><tr>""",
|
"""<table><tr>""",
|
||||||
|
@ -573,7 +573,7 @@ def _excel_to_list(filelike): # we may need 'encoding' argument ?
|
|||||||
wb = load_workbook(filename=filelike, read_only=True, data_only=True)
|
wb = load_workbook(filename=filelike, read_only=True, data_only=True)
|
||||||
except:
|
except:
|
||||||
log("Excel_to_list: failure to import document")
|
log("Excel_to_list: failure to import document")
|
||||||
open("/tmp/last_scodoc_import_failure" + scu.XLSX_SUFFIX, "w").write(filelike)
|
open("/tmp/last_scodoc_import_failure" + scu.XLSX_SUFFIX, "wb").write(filelike)
|
||||||
raise ScoValueError(
|
raise ScoValueError(
|
||||||
"Fichier illisible: assurez-vous qu'il s'agit bien d'un document Excel !"
|
"Fichier illisible: assurez-vous qu'il s'agit bien d'un document Excel !"
|
||||||
)
|
)
|
||||||
|
@ -106,7 +106,7 @@ def search_etud_in_dept(context, expnom="", REQUEST=None):
|
|||||||
Args:
|
Args:
|
||||||
expnom: string, regexp sur le nom ou un code_nip ou un etudid
|
expnom: string, regexp sur le nom ou un code_nip ou un etudid
|
||||||
"""
|
"""
|
||||||
if len(expnom) > 1:
|
if isinstance(expnom, int) or len(expnom) > 1:
|
||||||
try:
|
try:
|
||||||
etudid = int(expnom)
|
etudid = int(expnom)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
@ -221,7 +221,9 @@ def get_default_group(formsemestre_id, fix_if_missing=False):
|
|||||||
]
|
]
|
||||||
except ScoException:
|
except ScoException:
|
||||||
log("creating default partition for %s" % formsemestre_id)
|
log("creating default partition for %s" % formsemestre_id)
|
||||||
partition_id = partition_create(context, formsemestre_id, default=True)
|
partition_id = partition_create(
|
||||||
|
context, formsemestre_id, default=True, redirect=False
|
||||||
|
)
|
||||||
group_id = createGroup(context, partition_id, default=True)
|
group_id = createGroup(context, partition_id, default=True)
|
||||||
return group_id
|
return group_id
|
||||||
# debug check
|
# debug check
|
||||||
@ -623,17 +625,15 @@ def change_etud_group_in_partition(
|
|||||||
partition = get_partition(context, group["partition_id"])
|
partition = get_partition(context, group["partition_id"])
|
||||||
# 1- Supprime membership dans cette partition
|
# 1- Supprime membership dans cette partition
|
||||||
ndb.SimpleQuery(
|
ndb.SimpleQuery(
|
||||||
"""DELETE FROM group_membership
|
"""DELETE FROM group_membership gm
|
||||||
WHERE id IN
|
WHERE EXISTS
|
||||||
(SELECT gm.id
|
(SELECT 1 FROM group_descr gd
|
||||||
FROM group_membership gm, group_descr gd
|
|
||||||
WHERE gm.etudid = %(etudid)s
|
WHERE gm.etudid = %(etudid)s
|
||||||
AND gm.group_id = gd.id
|
AND gm.group_id = gd.id
|
||||||
AND gd.partition_id = %(partition_id)s)
|
AND gd.partition_id = %(partition_id)s)
|
||||||
""",
|
""",
|
||||||
{"etudid": etudid, "partition_id": partition["partition_id"]},
|
{"etudid": etudid, "partition_id": partition["partition_id"]},
|
||||||
)
|
)
|
||||||
|
|
||||||
# 2- associe au nouveau groupe
|
# 2- associe au nouveau groupe
|
||||||
set_group(context, etudid, group_id)
|
set_group(context, etudid, group_id)
|
||||||
|
|
||||||
@ -810,7 +810,7 @@ def partition_create(
|
|||||||
partition_name="",
|
partition_name="",
|
||||||
default=False,
|
default=False,
|
||||||
numero=None,
|
numero=None,
|
||||||
redirect=1,
|
redirect=True,
|
||||||
):
|
):
|
||||||
"""Create a new partition"""
|
"""Create a new partition"""
|
||||||
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
|
@ -35,6 +35,7 @@ import time
|
|||||||
from datetime import date
|
from datetime import date
|
||||||
|
|
||||||
import flask
|
import flask
|
||||||
|
from flask import g, url_for
|
||||||
|
|
||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
import app.scodoc.notesdb as ndb
|
import app.scodoc.notesdb as ndb
|
||||||
@ -101,8 +102,6 @@ ADMISSION_MODIFIABLE_FIELDS = (
|
|||||||
"paysdomicile",
|
"paysdomicile",
|
||||||
"telephone",
|
"telephone",
|
||||||
"telephonemobile",
|
"telephonemobile",
|
||||||
# Debouche
|
|
||||||
"debouche",
|
|
||||||
# Groupes
|
# Groupes
|
||||||
"groupes",
|
"groupes",
|
||||||
)
|
)
|
||||||
@ -242,9 +241,13 @@ def students_import_excel(
|
|||||||
)
|
)
|
||||||
if REQUEST:
|
if REQUEST:
|
||||||
if formsemestre_id:
|
if formsemestre_id:
|
||||||
dest = "Notes/formsemestre_status?formsemestre_id=%s" % formsemestre_id
|
dest = url_for(
|
||||||
|
"notes.formsemestre_status",
|
||||||
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=formsemestre_id,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
dest = scu.NotesURL()
|
dest = url_for("notes.index_html", scodoc_dept=g.scodoc_dept)
|
||||||
H = [html_sco_header.sco_header(page_title="Import etudiants")]
|
H = [html_sco_header.sco_header(page_title="Import etudiants")]
|
||||||
H.append("<ul>")
|
H.append("<ul>")
|
||||||
for d in diag:
|
for d in diag:
|
||||||
@ -467,7 +470,7 @@ def scolars_import_excel_file(
|
|||||||
{"etudid": etudid},
|
{"etudid": etudid},
|
||||||
)
|
)
|
||||||
cursor.execute(
|
cursor.execute(
|
||||||
"delete from identite where etudid=%(etudid)s", {"etudid": etudid}
|
"delete from identite where id=%(etudid)s", {"etudid": etudid}
|
||||||
)
|
)
|
||||||
cnx.commit()
|
cnx.commit()
|
||||||
log("scolars_import_excel_file: re-raising exception")
|
log("scolars_import_excel_file: re-raising exception")
|
||||||
@ -508,8 +511,11 @@ def students_import_admission(
|
|||||||
H.append("<p>Import terminé !</p>")
|
H.append("<p>Import terminé !</p>")
|
||||||
H.append(
|
H.append(
|
||||||
'<p><a class="stdlink" href="%s">Continuer</a></p>'
|
'<p><a class="stdlink" href="%s">Continuer</a></p>'
|
||||||
% "formsemestre_status?formsemestre_id=%s"
|
% url_for(
|
||||||
% formsemestre_id
|
"notes.formsemestre_status",
|
||||||
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=formsemestre_id,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
if diag:
|
if diag:
|
||||||
H.append("<p>Diagnostic: <ul><li>%s</li></ul></p>" % "</li><li>".join(diag))
|
H.append("<p>Diagnostic: <ul><li>%s</li></ul></p>" % "</li><li>".join(diag))
|
||||||
@ -649,8 +655,11 @@ def scolars_import_admission(
|
|||||||
log("fields titles =" + ", ".join([fields[x][0] for x in fields]))
|
log("fields titles =" + ", ".join([fields[x][0] for x in fields]))
|
||||||
raise FormatError(
|
raise FormatError(
|
||||||
"scolars_import_admission: colonnes nom et prenom requises",
|
"scolars_import_admission: colonnes nom et prenom requises",
|
||||||
dest_url="form_students_import_infos_admissions?formsemestre_id=%s"
|
dest_url=url_for(
|
||||||
% formsemestre_id,
|
"notes.form_students_import_infos_admissions",
|
||||||
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=formsemestre_id,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
modifiable_fields = set(ADMISSION_MODIFIABLE_FIELDS)
|
modifiable_fields = set(ADMISSION_MODIFIABLE_FIELDS)
|
||||||
@ -679,8 +688,11 @@ def scolars_import_admission(
|
|||||||
raise FormatError(
|
raise FormatError(
|
||||||
'scolars_import_admission: valeur invalide, ligne %d colonne %s: "%s"'
|
'scolars_import_admission: valeur invalide, ligne %d colonne %s: "%s"'
|
||||||
% (nline, field_name, line[idx]),
|
% (nline, field_name, line[idx]),
|
||||||
dest_url="form_students_import_infos_admissions?formsemestre_id=%s"
|
dest_url=url_for(
|
||||||
% formsemestre_id,
|
"notes.form_students_import_infos_admissions",
|
||||||
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=formsemestre_id,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
if val is not None: # note: ne peut jamais supprimer une valeur
|
if val is not None: # note: ne peut jamais supprimer une valeur
|
||||||
args[field_name] = val
|
args[field_name] = val
|
||||||
@ -762,8 +774,11 @@ def adm_get_fields(titles, formsemestre_id):
|
|||||||
raise FormatError(
|
raise FormatError(
|
||||||
'scolars_import_admission: titre "%s" en double (ligne 1)'
|
'scolars_import_admission: titre "%s" en double (ligne 1)'
|
||||||
% (title),
|
% (title),
|
||||||
dest_url="form_students_import_infos_admissions_apb?formsemestre_id=%s"
|
dest_url=url_for(
|
||||||
% formsemestre_id,
|
"notes.form_students_import_infos_admissions_apb",
|
||||||
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=formsemestre_id,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
fields[idx] = (k, convertor)
|
fields[idx] = (k, convertor)
|
||||||
idx += 1
|
idx += 1
|
||||||
|
@ -354,7 +354,7 @@ def ficheEtud(context, etudid=None, REQUEST=None):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Devenir de l'étudiant:
|
# Devenir de l'étudiant:
|
||||||
has_debouche = True # info['debouche']
|
has_debouche = True
|
||||||
if sco_permissions_check.can_edit_suivi():
|
if sco_permissions_check.can_edit_suivi():
|
||||||
suivi_readonly = "0"
|
suivi_readonly = "0"
|
||||||
link_add_suivi = """<li class="adddebouche">
|
link_add_suivi = """<li class="adddebouche">
|
||||||
|
@ -1594,11 +1594,11 @@ def etudident_delete(context, etudid, dialog_confirmed=False, REQUEST=None):
|
|||||||
"adresse",
|
"adresse",
|
||||||
"absences",
|
"absences",
|
||||||
"billet_absence",
|
"billet_absence",
|
||||||
"identite",
|
|
||||||
]
|
]
|
||||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||||
for table in tables:
|
for table in tables:
|
||||||
cursor.execute("delete from %s where etudid=%%(etudid)s" % table, etud)
|
cursor.execute("delete from %s where etudid=%%(etudid)s" % table, etud)
|
||||||
|
cursor.execute("delete from identite where id=%(etudid)s", etud)
|
||||||
cnx.commit()
|
cnx.commit()
|
||||||
# Inval semestres où il était inscrit:
|
# Inval semestres où il était inscrit:
|
||||||
to_inval = [s["formsemestre_id"] for s in etud["sems"]]
|
to_inval = [s["formsemestre_id"] for s in etud["sems"]]
|
||||||
@ -1760,6 +1760,7 @@ def check_group_apogee(
|
|||||||
|
|
||||||
|
|
||||||
@bp.route("/form_students_import_excel", methods=["GET", "POST"])
|
@bp.route("/form_students_import_excel", methods=["GET", "POST"])
|
||||||
|
@scodoc
|
||||||
@permission_required(Permission.ScoEtudInscrit)
|
@permission_required(Permission.ScoEtudInscrit)
|
||||||
@scodoc7func(context)
|
@scodoc7func(context)
|
||||||
def form_students_import_excel(context, REQUEST, formsemestre_id=None):
|
def form_students_import_excel(context, REQUEST, formsemestre_id=None):
|
||||||
|
Loading…
Reference in New Issue
Block a user