Améliore présentation page import admission

This commit is contained in:
Emmanuel Viennet 2024-09-03 00:29:50 +02:00
parent 5336913ba5
commit 01e5d1087e
7 changed files with 103 additions and 74 deletions

View File

@ -320,7 +320,7 @@ def formsemestre_status_menubar(formsemestre: FormSemestre | None) -> str:
}, },
{ {
"title": "Import/export des données admission", "title": "Import/export des données admission",
"endpoint": "scolar.form_students_import_infos_admissions", "endpoint": "scolar.form_import_infos_admissions",
"args": {"formsemestre_id": formsemestre_id}, "args": {"formsemestre_id": formsemestre_id},
"enabled": current_user.has_permission(Permission.ScoView), "enabled": current_user.has_permission(Permission.ScoView),
}, },

View File

@ -687,7 +687,7 @@ def scolars_import_admission(
else "colonnes nom et prenom requises" else "colonnes nom et prenom requises"
), ),
dest_url=url_for( dest_url=url_for(
"scolar.form_students_import_infos_admissions", "scolar.form_import_infos_admissions",
scodoc_dept=g.scodoc_dept, scodoc_dept=g.scodoc_dept,
formsemestre_id=formsemestre_id, formsemestre_id=formsemestre_id,
), ),
@ -732,7 +732,7 @@ def scolars_import_admission(
f"""scolars_import_admission: valeur invalide, ligne { f"""scolars_import_admission: valeur invalide, ligne {
nline} colonne {field_name}: '{line[idx]}'""", nline} colonne {field_name}: '{line[idx]}'""",
dest_url=url_for( dest_url=url_for(
"scolar.form_students_import_infos_admissions", "scolar.form_import_infos_admissions",
scodoc_dept=g.scodoc_dept, scodoc_dept=g.scodoc_dept,
formsemestre_id=formsemestre_id, formsemestre_id=formsemestre_id,
), ),
@ -829,7 +829,7 @@ def adm_get_fields(titles, formsemestre_id: int, use_etudid: bool = False):
raise ScoFormatError( raise ScoFormatError(
f"""scolars_import_admission: titre "{title}" en double (ligne 1)""", f"""scolars_import_admission: titre "{title}" en double (ligne 1)""",
dest_url=url_for( dest_url=url_for(
"scolar.form_students_import_infos_admissions", "scolar.form_import_infos_admissions",
scodoc_dept=g.scodoc_dept, scodoc_dept=g.scodoc_dept,
formsemestre_id=formsemestre_id, formsemestre_id=formsemestre_id,
), ),

View File

@ -58,6 +58,11 @@ div.sco-app-content {
margin-right: 12px; margin-right: 12px;
} }
.vspaced {
margin-top: 18px !important;
margin-bottom: 18px !important;
}
.space-before-18 { .space-before-18 {
margin-top: 18px !important; margin-top: 18px !important;
} }

View File

@ -0,0 +1,76 @@
{% extends "sco_page.j2" %}
{% import 'wtf.j2' as wtf %}
{% block styles %}
{{super()}}
{% endblock %}
{% block app_content %}
<h2 class="formsemestre">Téléchargement des informations sur les étudiants</h2>
<div class="scobox help explanation">
<p>
Cette page peut être utilisé pour exporter ou importer / modfiier les informations
concernant les étudiants et leur admission.
</p>
<p>Ces informations sont facultatives mais souvent utiles pour mieux connaitre les étudiants
et aussi pour effectuer des statistiques (résultats suivant le type de bac...).
Les données sont affichées sur les fiches individuelles des étudiants.
</p>
<ul>
<li>origine des étudiants (lycées, bac, etc);</li>
<li>type d'admission (Parcoursup, autre);</li>
<li>placement dans les groupes et parcours.</li>
</ul>
<p>
Seuls les étudiants actuellement inscrits dans ce semestre ScoDoc seront affectés,
les autres lignes de la feuille seront ignorées.
Et seules les colonnes intéressant ScoDoc
seront importées: il est inutile d'éliminer les autres.
</p>
<p>
<em>Seules les données "admission" seront modifiées
(et pas l'identité de l'étudiant).</em>
</p>
<p>
<em>Les colonnes "nom" et "prenom" sont requises,
ou bien une colonne "etudid" si la case
"Utiliser l'identifiant d'étudiant ScoDoc" est cochée.
</em>
</p>
</div>
<div class="scobox">
<div class="scobox-title">Exportation des données</div>
Avant d'importer vos données, il est recommandé d'enregistrer
les informations actuelles:
<div class="vspaced">
<a class="stdlink" href="{{
url_for('scolar.import_generate_admission_sample',
scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre_id)
}}">exporter les données actuelles de ScoDoc</a>
</div>
(ce fichier peut être ré-importé après d'éventuelles modifications)
</div>
<div class="scobox">
<div class="scobox-title">Importation des données</div>
{{ tf_form | safe }}
</div>
<div class="scobox explanation">
Les colonnes importables par cette fonction sont indiquées dans la table ci-dessous.
Seule la première feuille du classeur sera utilisée.
<div id="adm_table_description_format">
{{adm_table_description_format|safe}}
</div>
</div>
{% endblock %}

View File

@ -2343,11 +2343,11 @@ def import_generate_admission_sample(formsemestre_id):
# --- Données admission depuis fichier excel (version nov 2016) # --- Données admission depuis fichier excel (version nov 2016)
@bp.route("/form_students_import_infos_admissions", methods=["GET", "POST"]) @bp.route("/form_import_infos_admissions", methods=["GET", "POST"])
@scodoc @scodoc
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func @scodoc7func
def form_students_import_infos_admissions(formsemestre_id=None): def form_import_infos_admissions(formsemestre_id=None):
"formulaire import xls" "formulaire import xls"
authuser = current_user authuser = current_user
if not authuser.has_permission(Permission.EtudInscrit): if not authuser.has_permission(Permission.EtudInscrit):
@ -2356,8 +2356,8 @@ def form_students_import_infos_admissions(formsemestre_id=None):
"sco_page.j2", "sco_page.j2",
title="Export données admissions (Parcoursup ou autre)", title="Export données admissions (Parcoursup ou autre)",
content=f""" content=f"""
<h2 class="formsemestre">Téléchargement des informations sur l'admission <h2 class="formsemestre">Téléchargement des informations sur
des étudiants</h2> les étudiants (admission, ...)</h2>
<p> <p>
<a href="{ url_for('scolar.import_generate_admission_sample', <a href="{ url_for('scolar.import_generate_admission_sample',
scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre_id ) scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre_id )
@ -2369,48 +2369,6 @@ def form_students_import_infos_admissions(formsemestre_id=None):
) )
# On a le droit d'importer: # On a le droit d'importer:
H = [
f"""<h2 class="formsemestre">Téléchargement des informations sur l'admission des étudiants
depuis feuilles import Parcoursup</h2>
<div style="color: red">
<p>A utiliser pour renseigner les informations sur l'origine des étudiants (lycées, bac, etc).
Ces informations sont facultatives mais souvent utiles pour mieux connaitre les étudiants
et aussi pour effectuer des statistiques (résultats suivant le type de bac...).
Les données sont affichées sur les fiches individuelles des étudiants.
</p>
</div>
<div class="help">
<p>
Vous pouvez importer ici la feuille excel utilisée pour envoyer
le classement Parcoursup.
Seuls les étudiants actuellement inscrits dans ce semestre ScoDoc seront affectés,
les autres lignes de la feuille seront ignorées.
Et seules les colonnes intéressant ScoDoc
seront importées: il est inutile d'éliminer les autres.
</p>
<p>
<em>Seules les données "admission" seront modifiées
(et pas l'identité de l'étudiant).</em>
</p>
<p>
<em>Les colonnes "nom" et "prenom" sont requises,
ou bien une colonne "etudid" si la case
"Utiliser l'identifiant d'étudiant ScoDoc" est cochée.
</em>
</p>
<p>
Avant d'importer vos données, il est recommandé d'enregistrer
les informations actuelles:
<a class="stdlink" href="{
url_for("scolar.import_generate_admission_sample",
scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre_id)
}">exporter les données actuelles de ScoDoc</a>
(ce fichier peut être -importé après d'éventuelles modifications)
</p>
</div>
""",
]
tf = TrivialFormulator( tf = TrivialFormulator(
request.base_url, request.base_url,
scu.get_request_args(), scu.get_request_args(),
@ -2439,26 +2397,17 @@ def form_students_import_infos_admissions(formsemestre_id=None):
), ),
("formsemestre_id", {"input_type": "hidden"}), ("formsemestre_id", {"input_type": "hidden"}),
), ),
submitlabel="Télécharger", submitlabel="Importer",
)
help_text = (
"""<p>Les colonnes importables par cette fonction sont indiquées
dans la table ci-dessous.
Seule la première feuille du classeur sera utilisée.
<div id="adm_table_description_format">
"""
+ sco_import_etuds.adm_table_description_format().html()
+ """</div>"""
) )
if tf[0] == 0: if tf[0] == 0:
return render_template( return render_template(
"sco_page.j2", "formsemestre/form_import_infos_admissions.j2",
title="Import données admissions Parcoursup", title="Import données admissions",
content="\n".join(H) + tf[1] + help_text, tf_form=tf[1],
adm_table_description_format=sco_import_etuds.adm_table_description_format().html(),
) )
elif tf[0] == -1: if tf[0] == -1:
return flask.redirect( return flask.redirect(
url_for( url_for(
"notes.formsemestre_status", "notes.formsemestre_status",
@ -2466,7 +2415,6 @@ def form_students_import_infos_admissions(formsemestre_id=None):
formsemestre_id=formsemestre_id, formsemestre_id=formsemestre_id,
) )
) )
else:
return sco_import_etuds.students_import_admission( return sco_import_etuds.students_import_admission(
tf[2]["csvfile"], tf[2]["csvfile"],
type_admission=tf[2]["type_admission"], type_admission=tf[2]["type_admission"],

View File

@ -1,7 +1,7 @@
# -*- mode: python -*- # -*- mode: python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
SCOVERSION = "9.7.14" SCOVERSION = "9.7.15"
SCONAME = "ScoDoc" SCONAME = "ScoDoc"

View File

@ -133,7 +133,7 @@ def test_formsemestre_misc_views(test_client):
ans = sco_inscr_passage.formsemestre_inscr_passage(formsemestre.id) ans = sco_inscr_passage.formsemestre_inscr_passage(formsemestre.id)
ans = call_view(scolar.form_students_import_excel, formsemestre.id) ans = call_view(scolar.form_students_import_excel, formsemestre.id)
assert isinstance(ans, str) assert isinstance(ans, str)
ans = call_view(scolar.form_students_import_infos_admissions, formsemestre.id) ans = call_view(scolar.form_import_infos_admissions, formsemestre.id)
ans = sco_formsemestre_inscriptions.formsemestre_inscrits_ailleurs(formsemestre.id) ans = sco_formsemestre_inscriptions.formsemestre_inscrits_ailleurs(formsemestre.id)
# ----- MENU GROUPES # ----- MENU GROUPES