Compare commits
8 Commits
be39245e25
...
719d14673d
Author | SHA1 | Date |
---|---|---|
Cléo Baras | 719d14673d | |
Cléo Baras | 98eb7699a0 | |
Cléo Baras | 7b22d26095 | |
Cléo Baras | 371d7eff64 | |
Cléo Baras | 0adcbb7c0b | |
Cléo Baras | f10d46c230 | |
Emmanuel Viennet | 4f41ef7050 | |
Emmanuel Viennet | ef4c2fa64b |
|
@ -248,10 +248,9 @@ def get_annee_diplome_semestre(
|
|||
|
||||
|
||||
def get_cosemestres_diplomants(
|
||||
annee_diplome: int, formation_id: int
|
||||
annee_diplome: int
|
||||
) -> dict[int, FormSemestre]:
|
||||
"""Ensemble des cosemestres donnant lieu à diplomation à l'``annee_diplome``
|
||||
et s'intégrant à la formation donnée par son ``formation_id``.
|
||||
"""Ensemble des cosemestres donnant lieu à diplomation à l'``annee_diplome``.
|
||||
|
||||
**Définition** : Un co-semestre est un semestre :
|
||||
|
||||
|
@ -259,26 +258,17 @@ def get_cosemestres_diplomants(
|
|||
* dont la formation est la même (optionnel)
|
||||
* qui a des étudiants inscrits
|
||||
|
||||
Si formation_id == None, ne prend pas en compte l'identifiant de formation
|
||||
TODO:: A raccrocher à un programme
|
||||
|
||||
Args:
|
||||
annee_diplome: L'année de diplomation
|
||||
formation_id: L'identifiant de la formation
|
||||
|
||||
Returns:
|
||||
Un dictionnaire {fid: FormSemestre(fid)} contenant les cosemestres
|
||||
"""
|
||||
tousLesSems = (
|
||||
sco_formsemestre.do_formsemestre_list()
|
||||
) # tous les semestres memorisés dans scodoc
|
||||
|
||||
if formation_id:
|
||||
cosemestres_fids = {
|
||||
sem["id"]
|
||||
for sem in tousLesSems
|
||||
if get_annee_diplome_semestre(sem) == annee_diplome
|
||||
and sem["formation_id"] == formation_id
|
||||
}
|
||||
else:
|
||||
cosemestres_fids = {
|
||||
cosemestres_fids = {
|
||||
sem["id"]
|
||||
for sem in tousLesSems
|
||||
if get_annee_diplome_semestre(sem) == annee_diplome
|
||||
|
|
|
@ -41,7 +41,8 @@ import app.pe.pe_rcs
|
|||
from app.models import FormSemestre, Identite, Formation
|
||||
from app.pe import pe_comp, pe_affichage
|
||||
from app.scodoc import codes_cursus
|
||||
|
||||
from app.scodoc import sco_utils as scu
|
||||
from app.comp.res_sem import load_formsemestre_results
|
||||
|
||||
class EtudiantsJuryPE:
|
||||
"""Classe centralisant la gestion des étudiants à prendre en compte dans un jury de PE"""
|
||||
|
@ -94,7 +95,7 @@ class EtudiantsJuryPE:
|
|||
|
||||
*Remarque* : ex: JuryPE.get_etudiants_in_jury()
|
||||
"""
|
||||
cosemestres = pe_comp.get_cosemestres_diplomants(self.annee_diplome, None)
|
||||
cosemestres = pe_comp.get_cosemestres_diplomants(self.annee_diplome)
|
||||
self.cosemestres = cosemestres
|
||||
|
||||
pe_affichage.pe_print(
|
||||
|
@ -236,8 +237,15 @@ class EtudiantsJuryPE:
|
|||
"abandon": False, # va être traité en dessous
|
||||
}
|
||||
|
||||
# Est-il réorienté / démissionnaire ou a-t-il arrêté volontairement sa formation ?
|
||||
self.cursus[etudid]["abandon"] = arret_de_formation(identite, cosemestres)
|
||||
# Est-il démissionnaire : charge son dernier semestre pour connaitre son état ?
|
||||
dernier_semes_etudiant = formsemestres[0]
|
||||
res = load_formsemestre_results(dernier_semes_etudiant)
|
||||
etud_etat = res.get_etud_etat(etudid)
|
||||
if etud_etat == scu.DEMISSION:
|
||||
self.cursus[etudid]["abandon"] |= True
|
||||
else:
|
||||
# Est-il réorienté ou a-t-il arrêté volontairement sa formation ?
|
||||
self.cursus[etudid]["abandon"] |= arret_de_formation(identite, cosemestres)
|
||||
|
||||
def get_semestres_significatifs(self, etudid: int):
|
||||
"""Ensemble des semestres d'un étudiant, qui l'auraient amené à être diplomé
|
||||
|
@ -251,7 +259,6 @@ class EtudiantsJuryPE:
|
|||
Un dictionnaire ``{fid: FormSemestre(fid)`` dans lequel les semestres
|
||||
amènent à une diplomation avant l'annee de diplomation du jury
|
||||
"""
|
||||
|
||||
semestres_etudiant = self.cursus[etudid]["formsemestres"]
|
||||
semestres_significatifs = {}
|
||||
for fid in semestres_etudiant:
|
||||
|
|
|
@ -109,10 +109,21 @@ class SemestreTag(TableTag):
|
|||
|
||||
## Vérifie l'unicité des tags
|
||||
if len(set(self.tags)) != len(self.tags):
|
||||
liste_tag_reserves = ["but"] + list(dict_ues_competences.values())
|
||||
liste_tag_perso = list(tags_personnalises.keys())
|
||||
intersection = list(set(liste_tag_perso) & set(liste_tag_reserves))
|
||||
liste_intersection = "\n".join([f"<li><code>{tag}</code></li>" for tag in intersection])
|
||||
message = f"""Erreur dans le module PE : Un des tags saisis dans votre programme de formation
|
||||
fait parti des tags réservés. En particulier,
|
||||
votre semestre <em>{self.formsemestre.titre_annee()}</em>
|
||||
contient le(s) tag(s) réservé(s) suivant :
|
||||
<ul>
|
||||
{liste_intersection}
|
||||
</ul>
|
||||
Modifiez votre programme de formation pour le(s) supprimer. Il(s) sera(ont) automatiquement à vos documents de poursuites d'études.
|
||||
"""
|
||||
raise ScoValueError(
|
||||
f"""Erreur dans le module PE : L'un des tags saisis dans le programme
|
||||
fait parti des tags réservés (par ex. "comp. <titre_compétence>"). Modifiez les
|
||||
tags de votre programme"""
|
||||
message
|
||||
)
|
||||
|
||||
# Calcul des moyennes & les classements de chaque étudiant à chaque tag
|
||||
|
|
|
@ -70,14 +70,19 @@ def pe_view_sem_recap(formsemestre_id: int):
|
|||
# L'année du diplome
|
||||
annee_diplome = pe_comp.get_annee_diplome_semestre(formsemestre)
|
||||
|
||||
# Cosemestres diplomants
|
||||
cosemestres = pe_comp.get_cosemestres_diplomants(annee_diplome)
|
||||
|
||||
if request.method == "GET":
|
||||
return render_template(
|
||||
"pe/pe_view_sem_recap.j2",
|
||||
annee_diplome=annee_diplome,
|
||||
formsemestre=formsemestre,
|
||||
sco=ScoData(formsemestre=formsemestre),
|
||||
cosemestres=cosemestres,
|
||||
)
|
||||
|
||||
# request.method == "POST"
|
||||
jury = pe_jury.JuryPE(annee_diplome)
|
||||
if not jury.diplomes_ids:
|
||||
flash("aucun étudiant à considérer !")
|
||||
|
@ -97,3 +102,11 @@ def pe_view_sem_recap(formsemestre_id: int):
|
|||
download_name=scu.sanitize_filename(jury.nom_export_zip + ".zip"),
|
||||
as_attachment=True,
|
||||
)
|
||||
|
||||
return render_template(
|
||||
"pe/pe_view_sem_recap.j2",
|
||||
annee_diplome=annee_diplome,
|
||||
formsemestre=formsemestre,
|
||||
sco=ScoData(formsemestre=formsemestre),
|
||||
cosemestres=cosemestres,
|
||||
)
|
||||
|
|
|
@ -177,8 +177,7 @@ def etud_upload_file_form(etudid):
|
|||
data = tf[2]["datafile"].read()
|
||||
descr = tf[2]["description"]
|
||||
filename = tf[2]["datafile"].filename
|
||||
etud_archive_id = (etudid,)
|
||||
_store_etud_file_to_new_archive(etud_archive_id, data, filename, description=descr)
|
||||
_store_etud_file_to_new_archive(etudid, data, filename, description=descr)
|
||||
return flask.redirect(etud.url_fiche())
|
||||
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
<p>
|
||||
Cette fonction génère un ensemble de feuilles de calcul (xlsx)
|
||||
permettant d'éditer des avis de poursuites d'études pour les étudiants
|
||||
de BUT diplômés en {{annee_diplome}}.
|
||||
de BUT diplômés.
|
||||
<br>
|
||||
De nombreux aspects sont paramétrables:
|
||||
<a href="https://scodoc.org/AvisPoursuiteEtudes"
|
||||
|
@ -40,9 +40,36 @@
|
|||
</p>
|
||||
</div>
|
||||
|
||||
<form method="post">
|
||||
<input type="submit" value="Générer les documents"/>
|
||||
<input type="hidden" name="formsemestre_id" value="{{formsemestre.id}}">
|
||||
</form>
|
||||
<h3>Avis de poursuites d'études de la promo {{ annee_diplome }}</h3>
|
||||
|
||||
<div class="help">
|
||||
Seront (a minima) pris en compte les étudiants ayant été inscrits aux semestres suivants :
|
||||
|
||||
<ul>
|
||||
{% for fid in cosemestres %}
|
||||
<li>
|
||||
{{ cosemestres[fid].titre_annee() }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<progress id="pe_progress" style="visibility: hidden"></progress>
|
||||
<br>
|
||||
<button onclick="submitPEGeneration()">Générer les documents de la promo {{ annee_diplome }}</button>
|
||||
</div>
|
||||
|
||||
<form method="post" id="pe_generation" style="visibility: hidden">
|
||||
<input type="submit"
|
||||
onclick="submitPEGeneration()" value=""/>
|
||||
<input type="hidden" name="formsemestre_id" value="{{formsemestre.id}}">
|
||||
</form>
|
||||
|
||||
<script>
|
||||
function submitPEGeneration() {
|
||||
// document.getElementById("pe_progress").style.visibility = 'visible';
|
||||
document.getElementById("pe_generation").submit(); //attach an id to your form
|
||||
}
|
||||
</script>
|
||||
{% endblock app_content %}
|
|
@ -1,7 +1,7 @@
|
|||
# -*- mode: python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
SCOVERSION = "9.6.934"
|
||||
SCOVERSION = "9.6.936"
|
||||
|
||||
SCONAME = "ScoDoc"
|
||||
|
||||
|
|
Loading…
Reference in New Issue