diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py index ba49dec9d3c47baa5fd940eeea70d8902bc14e4c..c530bd1756586a4ebe02cbc00229b3e4f93112ac 100755 --- a/app/scodoc/sco_formsemestre_status.py +++ b/app/scodoc/sco_formsemestre_status.py @@ -320,7 +320,7 @@ def formsemestre_status_menubar(formsemestre: FormSemestre | None) -> str: }, { "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}, "enabled": current_user.has_permission(Permission.ScoView), }, diff --git a/app/scodoc/sco_import_etuds.py b/app/scodoc/sco_import_etuds.py index 74d7a5aaa780a6b35812bb54fe8e9ada0f39a017..5e129d69ddf656c9922efa17f07811dff934d204 100644 --- a/app/scodoc/sco_import_etuds.py +++ b/app/scodoc/sco_import_etuds.py @@ -687,7 +687,7 @@ def scolars_import_admission( else "colonnes nom et prenom requises" ), dest_url=url_for( - "scolar.form_students_import_infos_admissions", + "scolar.form_import_infos_admissions", scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre_id, ), @@ -732,7 +732,7 @@ def scolars_import_admission( f"""scolars_import_admission: valeur invalide, ligne { nline} colonne {field_name}: '{line[idx]}'""", dest_url=url_for( - "scolar.form_students_import_infos_admissions", + "scolar.form_import_infos_admissions", scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre_id, ), @@ -829,7 +829,7 @@ def adm_get_fields(titles, formsemestre_id: int, use_etudid: bool = False): raise ScoFormatError( f"""scolars_import_admission: titre "{title}" en double (ligne 1)""", dest_url=url_for( - "scolar.form_students_import_infos_admissions", + "scolar.form_import_infos_admissions", scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre_id, ), diff --git a/app/static/css/scodoc.css b/app/static/css/scodoc.css index 99c44367fc872c7838f78cdb8df02d8312ce0ac0..2bd994ec5426d35a217a4bb771f606fa9686ed39 100644 --- a/app/static/css/scodoc.css +++ b/app/static/css/scodoc.css @@ -58,6 +58,11 @@ div.sco-app-content { margin-right: 12px; } +.vspaced { + margin-top: 18px !important; + margin-bottom: 18px !important; +} + .space-before-18 { margin-top: 18px !important; } diff --git a/app/templates/formsemestre/form_import_infos_admissions.j2 b/app/templates/formsemestre/form_import_infos_admissions.j2 new file mode 100644 index 0000000000000000000000000000000000000000..c3aaa8ce8ac6503ce823edcd2c85dac6d1425998 --- /dev/null +++ b/app/templates/formsemestre/form_import_infos_admissions.j2 @@ -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 %} \ No newline at end of file diff --git a/app/views/scolar.py b/app/views/scolar.py index 28ead66f6205555536bb065e2c1b8e327c6639bc..b5c8a126b6ccb7063fdf60acc4206c3c6a082039 100644 --- a/app/views/scolar.py +++ b/app/views/scolar.py @@ -2343,11 +2343,11 @@ def import_generate_admission_sample(formsemestre_id): # --- 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 @permission_required(Permission.ScoView) @scodoc7func -def form_students_import_infos_admissions(formsemestre_id=None): +def form_import_infos_admissions(formsemestre_id=None): "formulaire import xls" authuser = current_user if not authuser.has_permission(Permission.EtudInscrit): @@ -2356,8 +2356,8 @@ def form_students_import_infos_admissions(formsemestre_id=None): "sco_page.j2", title="Export données admissions (Parcoursup ou autre)", content=f""" - <h2 class="formsemestre">Téléchargement des informations sur l'admission - des étudiants</h2> + <h2 class="formsemestre">Téléchargement des informations sur + les étudiants (admission, ...)</h2> <p> <a href="{ url_for('scolar.import_generate_admission_sample', 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: - 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 ré-importé après d'éventuelles modifications) - </p> - </div> - """, - ] - tf = TrivialFormulator( request.base_url, scu.get_request_args(), @@ -2439,26 +2397,17 @@ def form_students_import_infos_admissions(formsemestre_id=None): ), ("formsemestre_id", {"input_type": "hidden"}), ), - submitlabel="Télécharger", - ) - - 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>""" + submitlabel="Importer", ) if tf[0] == 0: return render_template( - "sco_page.j2", - title="Import données admissions Parcoursup", - content="\n".join(H) + tf[1] + help_text, + "formsemestre/form_import_infos_admissions.j2", + title="Import données admissions", + 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( url_for( "notes.formsemestre_status", @@ -2466,13 +2415,12 @@ def form_students_import_infos_admissions(formsemestre_id=None): formsemestre_id=formsemestre_id, ) ) - else: - return sco_import_etuds.students_import_admission( - tf[2]["csvfile"], - type_admission=tf[2]["type_admission"], - formsemestre_id=formsemestre_id, - use_etudid=tf[2]["use_etudid"], - ) + return sco_import_etuds.students_import_admission( + tf[2]["csvfile"], + type_admission=tf[2]["type_admission"], + formsemestre_id=formsemestre_id, + use_etudid=tf[2]["use_etudid"], + ) @bp.route("/formsemestre_import_etud_admission") diff --git a/sco_version.py b/sco_version.py index 5f1901f3340a4ae79476e2cdd23cc63982ca391f..8c0bf96692b8193c2a6dae656475156316aa5735 100644 --- a/sco_version.py +++ b/sco_version.py @@ -1,7 +1,7 @@ # -*- mode: python -*- # -*- coding: utf-8 -*- -SCOVERSION = "9.7.14" +SCOVERSION = "9.7.15" SCONAME = "ScoDoc" diff --git a/tests/unit/test_formsemestre.py b/tests/unit/test_formsemestre.py index 783c12320dd7a60fc698cf4f3d2d6f28ecb84dd1..64a7b307d82c7f939e581acb72605aaedd1c0e58 100644 --- a/tests/unit/test_formsemestre.py +++ b/tests/unit/test_formsemestre.py @@ -133,7 +133,7 @@ def test_formsemestre_misc_views(test_client): ans = sco_inscr_passage.formsemestre_inscr_passage(formsemestre.id) ans = call_view(scolar.form_students_import_excel, formsemestre.id) 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) # ----- MENU GROUPES