minor code cleaning

This commit is contained in:
Emmanuel Viennet 2022-11-22 15:25:33 +01:00
parent 6838c970a4
commit 06caacbb47
1 changed files with 87 additions and 60 deletions

View File

@ -651,29 +651,28 @@ def notes_add(
def saisie_notes_tableur(evaluation_id, group_ids=()): def saisie_notes_tableur(evaluation_id, group_ids=()):
"""Saisie des notes via un fichier Excel""" """Saisie des notes via un fichier Excel"""
evals = sco_evaluation_db.do_evaluation_list({"evaluation_id": evaluation_id}) evaluation = Evaluation.query.get_or_404(evaluation_id)
if not evals: moduleimpl_id = evaluation.moduleimpl.id
raise ScoValueError("invalid evaluation_id") formsemestre_id = evaluation.moduleimpl.formsemestre_id
E = evals[0] if not sco_permissions_check.can_edit_notes(current_user, moduleimpl_id):
M = sco_moduleimpl.moduleimpl_list(moduleimpl_id=E["moduleimpl_id"])[0]
formsemestre_id = M["formsemestre_id"]
if not sco_permissions_check.can_edit_notes(current_user, E["moduleimpl_id"]):
return ( return (
html_sco_header.sco_header() html_sco_header.sco_header()
+ "<h2>Modification des notes impossible pour %s</h2>" + f"""
% current_user.user_name <h2>Modification des notes impossible pour {current_user.user_name}</h2>
+ """<p>(vérifiez que le semestre n'est pas verrouillé et que vous <p>(vérifiez que le semestre n'est pas verrouillé et que vous
avez l'autorisation d'effectuer cette opération)</p> avez l'autorisation d'effectuer cette opération)
<p><a href="moduleimpl_status?moduleimpl_id=%s">Continuer</a></p> </p>
<p><a class="stdlink" href="{
url_for("notes.moduleimpl_status", scodoc_dept=g.scodoc_dept,
moduleimpl_id=moduleimpl_id)
}">Continuer</a></p>
""" """
% E["moduleimpl_id"]
+ html_sco_header.sco_footer() + html_sco_header.sco_footer()
) )
if E["description"]: page_title = "Saisie des notes" + (
page_title = 'Saisie des notes de "%s"' % E["description"] f"""de {evaluation.description}""" if evaluation.description else ""
else: )
page_title = "Saisie des notes"
# Informations sur les groupes à afficher: # Informations sur les groupes à afficher:
groups_infos = sco_groups_view.DisplayedGroupsInfos( groups_infos = sco_groups_view.DisplayedGroupsInfos(
@ -700,16 +699,23 @@ def saisie_notes_tableur(evaluation_id, group_ids=()):
H.append("</td></tr></table></div>") H.append("</td></tr></table></div>")
H.append( H.append(
"""<div class="saisienote_etape1"> f"""<div class="saisienote_etape1">
<span class="titredivsaisienote">Etape 1 : </span> <span class="titredivsaisienote">Etape 1 : </span>
<ul> <ul>
<li><a href="feuille_saisie_notes?evaluation_id=%s&%s" class="stdlink" id="lnk_feuille_saisie">obtenir le fichier tableur à remplir</a></li> <li><a class="stdlink" href="feuille_saisie_notes?evaluation_id={evaluation_id}&{
<li>ou <a class="stdlink" href="saisie_notes?evaluation_id=%s">aller au formulaire de saisie</a></li> groups_infos.groups_query_args}"
id="lnk_feuille_saisie">obtenir le fichier tableur à remplir</a>
</li>
<li>ou <a class="stdlink" href="{url_for("notes.saisie_notes",
scodoc_dept=g.scodoc_dept, evaluation_id=evaluation_id)
}">aller au formulaire de saisie</a></li>
</ul> </ul>
</div> </div>
<form><input type="hidden" name="evaluation_id" id="formnotes_evaluation_id" value="%s"/></form> <form>
<input type="hidden" name="evaluation_id" id="formnotes_evaluation_id"
value="{evaluation_id}"/>
</form>
""" """
% (evaluation_id, groups_infos.groups_query_args, evaluation_id, evaluation_id)
) )
H.append( H.append(
@ -752,70 +758,91 @@ def saisie_notes_tableur(evaluation_id, group_ids=()):
if updiag[0]: if updiag[0]:
H.append(updiag[1]) H.append(updiag[1])
H.append( H.append(
"""<p>Notes chargées.&nbsp;&nbsp;&nbsp; f"""<p>Notes chargées.&nbsp;&nbsp;&nbsp;
<a class="stdlink" href="moduleimpl_status?moduleimpl_id=%(moduleimpl_id)s"> <a class="stdlink" href="{
url_for("notes.moduleimpl_status",
scodoc_dept=g.scodoc_dept, moduleimpl_id=moduleimpl_id)
}">
Revenir au tableau de bord du module</a> Revenir au tableau de bord du module</a>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
<a class="stdlink" href="saisie_notes?evaluation_id=%(evaluation_id)s">Charger d'autres notes dans cette évaluation</a> <a class="stdlink" href="{url_for("notes.saisie_notes",
scodoc_dept=g.scodoc_dept, evaluation_id=evaluation.id)
}">Charger d'autres notes dans cette évaluation</a>
</p>""" </p>"""
% E
) )
else: else:
H.append("""<p class="redboldtext">Notes non chargées !</p>""" + updiag[1])
H.append( H.append(
""" f"""
<p><a class="stdlink" href="saisie_notes_tableur?evaluation_id=%(evaluation_id)s"> <p class="redboldtext">Notes non chargées !</p>
Reprendre</a> {updiag[1]}
</p>""" <p><a class="stdlink" href="{url_for("notes.saisie_notes_tableur",
% E scodoc_dept=g.scodoc_dept, evaluation_id=evaluation.id)
}">
Reprendre</a>
</p>
"""
) )
# #
H.append("""</div><h3>Autres opérations</h3><ul>""") H.append("""</div><h3>Autres opérations</h3><ul>""")
if sco_permissions_check.can_edit_notes( if sco_permissions_check.can_edit_notes(
current_user, E["moduleimpl_id"], allow_ens=False current_user, moduleimpl_id, allow_ens=False
): ):
H.append( H.append(
""" f"""
<li> <li>
<form action="do_evaluation_set_missing" method="GET"> <form action="do_evaluation_set_missing" method="GET">
Mettre toutes les notes manquantes à <input type="text" size="5" name="value"/> Mettre toutes les notes manquantes à <input type="text" size="5" name="value"/>
<input type="submit" value="OK"/> <input type="submit" value="OK"/>
<input type="hidden" name="evaluation_id" value="%s"/> <input type="hidden" name="evaluation_id" value="{evaluation_id}"/>
<em>ABS indique "absent" (zéro), EXC "excusé" (neutralisées), ATT "attente"</em> <em>ABS indique "absent" (zéro), EXC "excusé" (neutralisées), ATT "attente"</em>
</form> </form>
</li> </li>
<li><a class="stdlink" href="evaluation_suppress_alln?evaluation_id=%s">Effacer toutes les notes de cette évaluation</a> (ceci permet ensuite de supprimer l'évaluation si besoin) <li><a class="stdlink" href="{url_for("notes.evaluation_suppress_alln",
</li>""" scodoc_dept=g.scodoc_dept, evaluation_id=evaluation_id)
% (evaluation_id, evaluation_id) }">Effacer toutes les notes de cette évaluation</a>
) # ' (ceci permet ensuite de supprimer l'évaluation si besoin)
H.append( </li>
"""<li><a class="stdlink" href="moduleimpl_status?moduleimpl_id=%(moduleimpl_id)s">Revenir au module</a></li> <li><a class="stdlink" href="{url_for("notes.moduleimpl_status",
<li><a class="stdlink" href="saisie_notes?evaluation_id=%(evaluation_id)s">Revenir au formulaire de saisie</a></li> scodoc_dept=g.scodoc_dept, moduleimpl_id=moduleimpl_id)
</ul>""" }">Revenir au module</a>
% E </li>
) <li><a class="stdlink" href="{url_for("notes.saisie_notes",
scodoc_dept=g.scodoc_dept, evaluation_id=evaluation.id)
}">Revenir au formulaire de saisie</a>
</li>
</ul>
H.append( <h3>Explications</h3>
"""<h3>Explications</h3>
<ol> <ol>
<li>Etape 1: <li>Etape 1:
<ol><li>choisir le ou les groupes d'étudiants;</li> <ol><li>choisir le ou les groupes d'étudiants;</li>
<li>télécharger le fichier Excel à remplir.</li> <li>télécharger le fichier Excel à remplir.</li>
</ol> </ol>
</li> </li>
<li>Etape 2 (cadre vert): Indiquer le fichier Excel <em>téléchargé à l'étape 1</em> et dans lequel on a saisi des notes. Remarques: <li>Etape 2 (cadre vert): Indiquer le fichier Excel
<ul> <em>téléchargé à l'étape 1</em> et dans lequel on a saisi des notes.
<li>le fichier Excel peut être incomplet: on peut ne saisir que quelques notes et répéter l'opération (en téléchargeant un nouveau fichier) plus tard;</li> Remarques:
<li>seules les valeurs des notes modifiées sont prises en compte;</li> <ul>
<li>seules les notes sont extraites du fichier Excel;</li> <li>le fichier Excel peut être incomplet: on peut ne saisir que quelques notes
<li>on peut optionnellement ajouter un commentaire (type "copies corrigées par Dupont", ou "Modif. suite à contestation") dans la case "Commentaire". et répéter l'opération (en téléchargeant un nouveau fichier) plus tard;
</li> </li>
<li>le fichier Excel <em>doit impérativement être celui chargé à l'étape 1 pour cette évaluation</em>. Il n'est pas possible d'utiliser une liste d'appel ou autre document Excel téléchargé d'une autre page.</li> <li>seules les valeurs des notes modifiées sont prises en compte;
</ul> </li>
<li>seules les notes sont extraites du fichier Excel;
</li>
<li>on peut optionnellement ajouter un commentaire (type "copies corrigées
par Dupont", ou "Modif. suite à contestation") dans la case "Commentaire".
</li>
<li>le fichier Excel <em>doit impérativement être celui chargé à l'étape 1
pour cette évaluation</em>. Il n'est pas possible d'utiliser une liste d'appel
ou autre document Excel téléchargé d'une autre page.
</li>
</ul>
</li> </li>
</ol> </ol>
""" """
) )
H.append(html_sco_header.sco_footer()) H.append(html_sco_header.sco_footer())
return "\n".join(H) return "\n".join(H)