forked from ScoDoc/ScoDoc
Form. passage: # 566
This commit is contained in:
parent
bf6dfe38d2
commit
8d01135c4c
@ -39,21 +39,22 @@ from app import log
|
||||
from app.models import FormSemestre
|
||||
from app.scodoc.gen_tables import GenTable
|
||||
from app.scodoc import html_sco_header
|
||||
from app.scodoc import sco_cache
|
||||
from app.scodoc import sco_codes_parcours
|
||||
from app.scodoc import sco_preferences
|
||||
from app.scodoc import sco_pvjury
|
||||
from app.scodoc import sco_etud
|
||||
from app.scodoc import sco_formations
|
||||
from app.scodoc import sco_formsemestre
|
||||
from app.scodoc import sco_formsemestre_inscriptions
|
||||
from app.scodoc import sco_formations
|
||||
from app.scodoc import sco_groups
|
||||
from app.scodoc import sco_etud
|
||||
from app.scodoc import sco_preferences
|
||||
from app.scodoc import sco_pvjury
|
||||
from app.scodoc.sco_exceptions import ScoValueError
|
||||
|
||||
|
||||
def list_authorized_etuds_by_sem(sem, delai=274, ignore_jury=False):
|
||||
"""Liste des etudiants autorisés à s'inscrire dans sem.
|
||||
delai = nb de jours max entre la date de l'autorisation et celle de debut du semestre cible.
|
||||
ignore_jury: si vrai, considère tous les étudiants comem autorisés, même
|
||||
ignore_jury: si vrai, considère tous les étudiants comme autorisés, même
|
||||
s'ils n'ont pas de décision de jury.
|
||||
"""
|
||||
src_sems = list_source_sems(sem, delai=delai)
|
||||
@ -276,8 +277,8 @@ def formsemestre_inscr_passage(
|
||||
submitted=False,
|
||||
dialog_confirmed=False,
|
||||
ignore_jury=False,
|
||||
):
|
||||
"""Form. pour inscription des etudiants d'un semestre dans un autre
|
||||
) -> str:
|
||||
"""Page Form. pour inscription des etudiants d'un semestre dans un autre
|
||||
(donné par formsemestre_id).
|
||||
Permet de selectionner parmi les etudiants autorisés à s'inscrire.
|
||||
Principe:
|
||||
@ -285,8 +286,8 @@ def formsemestre_inscr_passage(
|
||||
- afficher chaque semestre "boites" avec cases à cocher
|
||||
- si l'étudiant est déjà inscrit, le signaler (gras, nom de groupes): il peut être désinscrit
|
||||
- on peut choisir les groupes TD, TP, TA
|
||||
- seuls les etudiants non inscrits changent (de groupe)
|
||||
- les etudiants inscrit qui se trouvent décochés sont désinscrits
|
||||
- seuls les étudiants non inscrits changent (de groupe)
|
||||
- les étudiants inscrit qui se trouvent décochés sont désinscrits
|
||||
- Confirmation: indiquer les étudiants inscrits et ceux désinscrits, le total courant.
|
||||
|
||||
"""
|
||||
@ -326,11 +327,9 @@ def formsemestre_inscr_passage(
|
||||
a_desinscrire = inscrits_set - etuds_set
|
||||
else:
|
||||
a_inscrire = a_desinscrire = []
|
||||
# log('formsemestre_inscr_passage: a_inscrire=%s' % str(a_inscrire) )
|
||||
# log('formsemestre_inscr_passage: a_desinscrire=%s' % str(a_desinscrire) )
|
||||
|
||||
if not submitted:
|
||||
H += build_page(
|
||||
H += _build_page(
|
||||
sem,
|
||||
auth_etuds_by_sem,
|
||||
inscrits,
|
||||
@ -343,7 +342,7 @@ def formsemestre_inscr_passage(
|
||||
if not dialog_confirmed:
|
||||
# Confirmation
|
||||
if a_inscrire:
|
||||
H.append("<h3>Etudiants à inscrire</h3><ol>")
|
||||
H.append("<h3>Étudiants à inscrire</h3><ol>")
|
||||
for etud in set_to_sorted_etud_list(a_inscrire):
|
||||
H.append("<li>%(nomprenom)s</li>" % etud)
|
||||
H.append("</ol>")
|
||||
@ -354,7 +353,7 @@ def formsemestre_inscr_passage(
|
||||
H.append('<li class="inscrailleurs">%(nomprenom)s</li>' % etud)
|
||||
H.append("</ul>")
|
||||
if a_desinscrire:
|
||||
H.append("<h3>Etudiants à désinscrire</h3><ol>")
|
||||
H.append("<h3>Étudiants à désinscrire</h3><ol>")
|
||||
for etudid in a_desinscrire:
|
||||
H.append(
|
||||
'<li class="desinscription">%(nomprenom)s</li>'
|
||||
@ -384,21 +383,29 @@ def formsemestre_inscr_passage(
|
||||
)
|
||||
)
|
||||
else:
|
||||
with sco_cache.DeferredSemCacheManager():
|
||||
# Inscription des étudiants au nouveau semestre:
|
||||
do_inscrit(
|
||||
sem,
|
||||
a_inscrire,
|
||||
inscrit_groupes=inscrit_groupes,
|
||||
)
|
||||
|
||||
# Desincriptions:
|
||||
# Désinscriptions:
|
||||
do_desinscrit(sem, a_desinscrire)
|
||||
|
||||
H.append(
|
||||
"""<h3>Opération effectuée</h3>
|
||||
<ul><li><a class="stdlink" href="formsemestre_inscr_passage?formsemestre_id=%s">Continuer les inscriptions</a></li>
|
||||
<li><a class="stdlink" href="formsemestre_status?formsemestre_id=%s">Tableau de bord du semestre</a></li>"""
|
||||
% (formsemestre_id, formsemestre_id)
|
||||
f"""<h3>Opération effectuée</h3>
|
||||
<ul>
|
||||
<li><a class="stdlink" href="{
|
||||
url_for("notes.formsemestre_inscr_passage",
|
||||
scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre_id)
|
||||
}">Continuer les inscriptions</a>
|
||||
</li>
|
||||
<li><a class="stdlink" href="{
|
||||
url_for("notes.formsemestre_status",
|
||||
scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre_id)
|
||||
}">Tableau de bord du semestre</a>
|
||||
</li>"""
|
||||
)
|
||||
partition = sco_groups.formsemestre_get_main_partition(formsemestre_id)
|
||||
if (
|
||||
@ -420,7 +427,7 @@ def formsemestre_inscr_passage(
|
||||
return "\n".join(H)
|
||||
|
||||
|
||||
def build_page(
|
||||
def _build_page(
|
||||
sem,
|
||||
auth_etuds_by_sem,
|
||||
inscrits,
|
||||
@ -429,6 +436,7 @@ def build_page(
|
||||
inscrit_groupes=False,
|
||||
ignore_jury=False,
|
||||
):
|
||||
formsemestre: FormSemestre = FormSemestre.query.get(sem["formsemestre_id"])
|
||||
inscrit_groupes = int(inscrit_groupes)
|
||||
ignore_jury = int(ignore_jury)
|
||||
if inscrit_groupes:
|
||||
@ -443,27 +451,36 @@ def build_page(
|
||||
html_sco_header.html_sem_header(
|
||||
"Passages dans le semestre", with_page_header=False
|
||||
),
|
||||
"""<form name="f" method="post" action="%s">""" % request.base_url,
|
||||
"""<input type="hidden" name="formsemestre_id" value="%(formsemestre_id)s"/>
|
||||
f"""<form name="f" method="post" action="{request.base_url}">
|
||||
|
||||
<input type="hidden" name="formsemestre_id" value="{sem['formsemestre_id']}"/>
|
||||
|
||||
<input type="submit" name="submitted" value="Appliquer les modifications"/>
|
||||
<a href="#help">aide</a>
|
||||
"""
|
||||
% sem, # "
|
||||
"""<input name="inscrit_groupes" type="checkbox" value="1" %s>inscrire aux mêmes groupes</input>"""
|
||||
% inscrit_groupes_checked,
|
||||
"""<input name="ignore_jury" type="checkbox" value="1" onchange="document.f.submit()" %s>inclure tous les étudiants (même sans décision de jury)</input>"""
|
||||
% ignore_jury_checked,
|
||||
"""<div class="pas_recap">Actuellement <span id="nbinscrits">%s</span> inscrits
|
||||
et %d candidats supplémentaires
|
||||
</div>"""
|
||||
% (len(inscrits), len(candidats_non_inscrits)),
|
||||
etuds_select_boxes(auth_etuds_by_sem, inscrits_ailleurs),
|
||||
"""<p/><input type="submit" name="submitted" value="Appliquer les modifications"/>""",
|
||||
formsemestre_inscr_passage_help(sem),
|
||||
"""</form>""",
|
||||
|
||||
<input name="inscrit_groupes" type="checkbox" value="1"
|
||||
{inscrit_groupes_checked}>inscrire aux mêmes groupes</input>
|
||||
|
||||
<input name="ignore_jury" type="checkbox" value="1" onchange="document.f.submit()"
|
||||
{ignore_jury_checked}>inclure tous les étudiants (même sans décision de jury)</input>
|
||||
|
||||
<div class="pas_recap">Actuellement <span id="nbinscrits">{len(inscrits)}</span> inscrits
|
||||
et {len(candidats_non_inscrits)} candidats supplémentaires
|
||||
</div>
|
||||
|
||||
<div>{scu.EMO_WARNING} <em>Seuls les semestres dont la date de fin est antérieure à la date de début
|
||||
de ce semestre ({formsemestre.date_debut.strftime("%d/%m/%Y")}) sont pris en compte.</em></div>
|
||||
{etuds_select_boxes(auth_etuds_by_sem, inscrits_ailleurs)}
|
||||
|
||||
<input type="submit" name="submitted" value="Appliquer les modifications"/>
|
||||
|
||||
{formsemestre_inscr_passage_help(sem)}
|
||||
|
||||
</form>
|
||||
""",
|
||||
]
|
||||
|
||||
# Semestres sans etudiants autorisés
|
||||
# Semestres sans étudiants autorisés
|
||||
empty_sems = []
|
||||
for formsemestre_id in auth_etuds_by_sem.keys():
|
||||
if not auth_etuds_by_sem[formsemestre_id]["etuds"]:
|
||||
@ -473,7 +490,10 @@ def build_page(
|
||||
"""<div class="pas_empty_sems"><h3>Autres semestres sans candidats :</h3><ul>"""
|
||||
)
|
||||
for infos in empty_sems:
|
||||
H.append("""<li><a href="%(title_target)s">%(title)s</a></li>""" % infos)
|
||||
H.append(
|
||||
"""<li><a class="stdlink" href="%(title_target)s">%(title)s</a></li>"""
|
||||
% infos
|
||||
)
|
||||
H.append("""</ul></div>""")
|
||||
|
||||
return H
|
||||
|
Loading…
Reference in New Issue
Block a user