forked from ScoDoc/DocScoDoc
Option to export Apo even if some csv are missing.
This commit is contained in:
parent
aab3cc7ce3
commit
7cd0d13e68
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""Affecte tous les modules d'un semestre au responsable de ce semestre
|
||||
"""Affecte tous les modules d'un semestre à l'utilisateur indiqué en argument
|
||||
Utile uniquement pour certains tests.
|
||||
|
||||
(à lancer en tant qu'utilisateur postgres)
|
||||
|
@ -254,8 +254,7 @@ def apo_csv_check_etape(context, semset, set_nips, etape_apo):
|
||||
|
||||
return nips_ok, apo_nips, nips_no_apo, nips_no_sco, maq_elems, sem_elems
|
||||
|
||||
|
||||
def apo_csv_semset_check(context, semset, allow_missing_apo=False): # was apo_csv_check
|
||||
def apo_csv_semset_check(context, semset, allow_missing_apo=False, allow_missing_csv=False): # was apo_csv_check
|
||||
"""
|
||||
check students in stored maqs vs students in semset
|
||||
Cas à détecter:
|
||||
@ -312,7 +311,7 @@ def apo_csv_semset_check(context, semset, allow_missing_apo=False): # was apo_c
|
||||
|
||||
# All ok ?
|
||||
ok_for_export = (
|
||||
(not etapes_missing_csv)
|
||||
((not etapes_missing_csv) or allow_missing_csv)
|
||||
and (not semset["etuds_without_nip"])
|
||||
and ((not nips_no_apo) or allow_missing_apo)
|
||||
and (not apo_dups)
|
||||
|
@ -50,6 +50,7 @@ def apo_semset_maq_status(
|
||||
semset_id="",
|
||||
allow_missing_apo=False,
|
||||
allow_missing_decisions=False,
|
||||
allow_missing_csv=False,
|
||||
block_export_res_etape=False,
|
||||
block_export_res_sem=False,
|
||||
block_export_res_ues=False,
|
||||
@ -64,13 +65,12 @@ def apo_semset_maq_status(
|
||||
raise ValueError("invalid null semset_id")
|
||||
semset = sco_semset.SemSet(context, semset_id=semset_id)
|
||||
semset.fill_formsemestres(REQUEST)
|
||||
|
||||
allow_missing_apo = int(
|
||||
allow_missing_apo
|
||||
) # autorise export meme si etudiants Apo manquants
|
||||
allow_missing_decisions = int(
|
||||
allow_missing_decisions
|
||||
) # autorise export meme s'il manque des décisions de jury
|
||||
# autorise export meme si etudiants Apo manquants:
|
||||
allow_missing_apo = int(allow_missing_apo)
|
||||
# autorise export meme s'il manque des décisions de jury:
|
||||
allow_missing_decisions = int(allow_missing_decisions)
|
||||
# autorise export même si maquette csv manquantes:
|
||||
allow_missing_csv = int(allow_missing_csv)
|
||||
block_export_res_etape = int(block_export_res_etape)
|
||||
block_export_res_sem = int(block_export_res_sem)
|
||||
block_export_res_ues = int(block_export_res_ues)
|
||||
@ -91,7 +91,7 @@ def apo_semset_maq_status(
|
||||
apo_dups,
|
||||
maq_elems,
|
||||
sem_elems,
|
||||
) = sco_etape_apogee.apo_csv_semset_check(context, semset, allow_missing_apo)
|
||||
) = sco_etape_apogee.apo_csv_semset_check(context, semset, allow_missing_apo, allow_missing_csv)
|
||||
|
||||
if not allow_missing_decisions:
|
||||
ok_for_export &= semset["jury_ok"]
|
||||
@ -260,6 +260,14 @@ def apo_semset_maq_status(
|
||||
H.append(
|
||||
""" >autoriser export même si des décisions de jury n'ont pas été saisies</input></div>"""
|
||||
)
|
||||
H.append(
|
||||
"""<div><input type="checkbox" name="allow_missing_csv" value="1" onchange="document.f.submit()" """
|
||||
)
|
||||
if allow_missing_csv:
|
||||
H.append("checked")
|
||||
H.append(
|
||||
""" >autoriser export même si étapes sans maquettes</input></div>"""
|
||||
)
|
||||
H.append("""</form>""")
|
||||
|
||||
if semset and ok_for_export:
|
||||
|
@ -370,31 +370,33 @@ def get_etapes_apogee(context):
|
||||
par défaut
|
||||
"""
|
||||
etapes_url = get_etapes_url(context)
|
||||
if not etapes_url:
|
||||
log("get_etapes_apogee: no configured URL")
|
||||
return {}
|
||||
portal_timeout = context.get_preference("portal_timeout")
|
||||
log(
|
||||
"get_etapes_apogee: requesting '%s' with timeout=%s"
|
||||
% (etapes_url, portal_timeout)
|
||||
)
|
||||
doc = query_portal(etapes_url, timeout=portal_timeout)
|
||||
try:
|
||||
infos = _parse_etapes_from_xml(context, doc)
|
||||
# cache le resultat (utile si le portail repond de façon intermitente)
|
||||
if infos:
|
||||
log("get_etapes_apogee: caching result")
|
||||
open(SCO_CACHE_ETAPE_FILENAME, "w").write(doc)
|
||||
except:
|
||||
log("invalid XML response from getEtapes Web Service\n%s" % etapes_url)
|
||||
# Avons nous la copie d'une réponse récente ?
|
||||
infos = {}
|
||||
if etapes_url:
|
||||
portal_timeout = context.get_preference("portal_timeout")
|
||||
log(
|
||||
"get_etapes_apogee: requesting '%s' with timeout=%s"
|
||||
% (etapes_url, portal_timeout)
|
||||
)
|
||||
doc = query_portal(etapes_url, timeout=portal_timeout)
|
||||
try:
|
||||
doc = open(SCO_CACHE_ETAPE_FILENAME).read()
|
||||
infos = _parse_etapes_from_xml(context, doc)
|
||||
log("using last saved version from " + SCO_CACHE_ETAPE_FILENAME)
|
||||
# cache le resultat (utile si le portail repond de façon intermitente)
|
||||
if infos:
|
||||
log("get_etapes_apogee: caching result")
|
||||
open(SCO_CACHE_ETAPE_FILENAME, "w").write(doc)
|
||||
except:
|
||||
# derniere chance: utilise étapes par défaut livrées avec ScoDoc
|
||||
return get_default_etapes(context)
|
||||
log("invalid XML response from getEtapes Web Service\n%s" % etapes_url)
|
||||
# Avons nous la copie d'une réponse récente ?
|
||||
try:
|
||||
doc = open(SCO_CACHE_ETAPE_FILENAME).read()
|
||||
infos = _parse_etapes_from_xml(context, doc)
|
||||
log("using last saved version from " + SCO_CACHE_ETAPE_FILENAME)
|
||||
except:
|
||||
infos = {}
|
||||
else:
|
||||
# Pas de portail: utilise étapes par défaut livrées avec ScoDoc
|
||||
log("get_etapes_apogee: no configured URL (using default file)")
|
||||
infos = get_default_etapes(context)
|
||||
return infos
|
||||
|
||||
|
||||
|
@ -1,154 +0,0 @@
|
||||
--- static/js/apo_semset_maq_status.js (revision 1865)
|
||||
+++ static/js/apo_semset_maq_status.js (working copy)
|
||||
@@ -1,61 +1,90 @@
|
||||
-
|
||||
-$(function() {
|
||||
- $( "div#export_help" ).accordion( {
|
||||
- heightStyle: "content",
|
||||
- collapsible: true,
|
||||
- active: false,
|
||||
- });
|
||||
-});
|
||||
-
|
||||
-// Affichage des listes par type
|
||||
-// routine de traitement d'évènement javascript à associé au lien
|
||||
-// présents dans le tableau effectifs
|
||||
-// -> filtre la liste étudiant sur critère de classe
|
||||
-// -> surligne le cas sélectionné
|
||||
-
|
||||
-function display(r, c, row, col) {
|
||||
- if ((row != r) && (row != '*')) return 'none';
|
||||
- if ((col != c) && (col != '*')) return 'none';
|
||||
- return '';
|
||||
-}
|
||||
-
|
||||
-function show_tag(all_rows, all_cols, tag) {
|
||||
- all_rows.split(',').forEach(function(r) {
|
||||
- all_cols.split(',').forEach(function(c) {
|
||||
- etudiants = r + c.substring(1);
|
||||
- $(etudiants).css("display", "none");
|
||||
- })
|
||||
- })
|
||||
- $('.' + tag).css('display', '');
|
||||
-}
|
||||
-
|
||||
-function show_css(elt, all_rows, all_cols, row, col, precision) {
|
||||
- all_rows.split(',').forEach(function(r) {
|
||||
- all_cols.split(',').forEach(function(c) {
|
||||
- etudiants = r + c.substring(1);
|
||||
- $(etudiants).css("display", display(r, c, row, col));
|
||||
- })
|
||||
- })
|
||||
- $('.repartition td').css("background-color", "");
|
||||
- $('.repartition th').css("background-color", "");
|
||||
- if (row == '*' && col == '*') {
|
||||
- } else if (row == '*') {
|
||||
- $(col).css("background-color", "lightblue");
|
||||
- } else if (col == '*') {
|
||||
- $(row + '>td').css("background-color", "lightblue");
|
||||
- $(row + '>th').css("background-color", "lightblue");
|
||||
- } else {
|
||||
- $(row + '>td' + col).css("background-color", "lightblue");
|
||||
- }
|
||||
- $("#effectifs").html("Liste des étudiants" + precision);
|
||||
-
|
||||
- // Modifie le titre de la section pour indiquer la sélection:
|
||||
- // elt est le lien cliqué
|
||||
- var td_class = elt.parentNode.className.trim();
|
||||
- if (td_class) {
|
||||
- var titre_col = $("table.repartition th." + td_class)[0].textContent.trim();
|
||||
- if (titre_col) {
|
||||
- $("h4#effectifs").html("Liste des étudiants de " + titre_col);
|
||||
- }
|
||||
- }
|
||||
-}
|
||||
+
|
||||
+$(function() {
|
||||
+ $( "div#export_help" ).accordion( {
|
||||
+ heightStyle: "content",
|
||||
+ collapsible: true,
|
||||
+ active: false,
|
||||
+ });
|
||||
+});
|
||||
+
|
||||
+// Affichage des listes par type
|
||||
+// routine de traitement d'évènement javascript à associé au lien
|
||||
+// présents dans le tableau effectifs
|
||||
+// -> filtre la liste étudiant sur critère de classe
|
||||
+// -> surligne le cas sélectionné
|
||||
+
|
||||
+function display(r, c, row, col) {
|
||||
+ if ((row != r) && (row != '*')) return 'none';
|
||||
+ if ((col != c) && (col != '*')) return 'none';
|
||||
+ return '';
|
||||
+}
|
||||
+
|
||||
+function show_tag(all_rows, all_cols, tag) {
|
||||
+ // Filtrer tous les étudiants
|
||||
+ all_rows.split(',').forEach(function(r) {
|
||||
+ all_cols.split(',').forEach(function(c) {
|
||||
+ etudiants = r + c.substring(1);
|
||||
+ $(etudiants).css("display", "none");
|
||||
+ })
|
||||
+ })
|
||||
+ // sauf le tag
|
||||
+ $('.' + tag).css('display', '');
|
||||
+}
|
||||
+
|
||||
+function show_filtres(effectifs, filtre_row, filtre_col) {
|
||||
+ $("#compte").html(effectifs);
|
||||
+ if ((filtre_row == '') && (filtre_col == '')) {
|
||||
+ $("#sans_filtre").css("display", "");
|
||||
+ $("#filtre_row").css("display", "none");
|
||||
+ $("#filtre_col").css("display", "none");
|
||||
+ } else {
|
||||
+ $("#sans_filtre").css("display", "none");
|
||||
+ if (filtre_row == '') {
|
||||
+ $("#filtre_row").css("display", "none");
|
||||
+ $("#filtre_col").css("display", "");
|
||||
+ $("#filtre_col").html("Filtre sur code étape: " + filtre_col);
|
||||
+ } else if (filtre_col == '') {
|
||||
+ $("#filtre_row").css("display", "");
|
||||
+ $("#filtre_col").css("display", "none");
|
||||
+ $("#filtre_row").html("Filtre sur semestre: " + filtre_row);
|
||||
+ } else {
|
||||
+ $("#filtre_row").css("display", "");
|
||||
+ $("#filtre_col").css("display", "");
|
||||
+ $("#filtre_row").html("Filtre sur semestre: " + filtre_row);
|
||||
+ $("#filtre_col").html("Filtre sur code étape: " + filtre_col);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+function doFiltrage(all_rows, all_cols, row, col, effectifs, filtre_row, filtre_col) {
|
||||
+ show_filtres(effectifs, filtre_row, filtre_col)
|
||||
+ all_rows.split(',').forEach(function(r) {
|
||||
+ all_cols.split(',').forEach(function(c) {
|
||||
+ etudiants = r + c.substring(1);
|
||||
+ $(etudiants).css("display", display(r, c, row, col));
|
||||
+ })
|
||||
+ })
|
||||
+
|
||||
+ $('.repartition td').css("background-color", "");
|
||||
+ $('.repartition th').css("background-color", "");
|
||||
+
|
||||
+ if (row == '*' && col == '*') { // Aucun filtre
|
||||
+ } else if (row == '*') { // filtrage sur 1 colonne
|
||||
+ $(col).css("background-color", "lightblue");
|
||||
+ } else if (col == '*') { // Filtrage sur 1 ligne
|
||||
+ $(row + '>td').css("background-color", "lightblue");
|
||||
+ $(row + '>th').css("background-color", "lightblue");
|
||||
+ } else { // filtrage sur 1 case
|
||||
+ $(row + '>td' + col).css("background-color", "lightblue");
|
||||
+ }
|
||||
+
|
||||
+ // Modifie le titre de la section pour indiquer la sélection:
|
||||
+ // elt est le lien cliqué
|
||||
+ // var td_class = elt.parentNode.className.trim();
|
||||
+ // if (td_class) {
|
||||
+ // var titre_col = $("table.repartition th.")[0].textContent.trim();
|
||||
+ // if (titre_col) {
|
||||
+ // $("h4#effectifs").html("Liste des étudiants de " + titre_col);
|
||||
+ // }
|
||||
+ // }
|
||||
+}
|
Loading…
Reference in New Issue
Block a user