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.models import FormSemestre
|
||||||
from app.scodoc.gen_tables import GenTable
|
from app.scodoc.gen_tables import GenTable
|
||||||
from app.scodoc import html_sco_header
|
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_codes_parcours
|
||||||
from app.scodoc import sco_preferences
|
from app.scodoc import sco_etud
|
||||||
from app.scodoc import sco_pvjury
|
from app.scodoc import sco_formations
|
||||||
from app.scodoc import sco_formsemestre
|
from app.scodoc import sco_formsemestre
|
||||||
from app.scodoc import sco_formsemestre_inscriptions
|
from app.scodoc import sco_formsemestre_inscriptions
|
||||||
from app.scodoc import sco_formations
|
|
||||||
from app.scodoc import sco_groups
|
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
|
from app.scodoc.sco_exceptions import ScoValueError
|
||||||
|
|
||||||
|
|
||||||
def list_authorized_etuds_by_sem(sem, delai=274, ignore_jury=False):
|
def list_authorized_etuds_by_sem(sem, delai=274, ignore_jury=False):
|
||||||
"""Liste des etudiants autorisés à s'inscrire dans sem.
|
"""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.
|
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.
|
s'ils n'ont pas de décision de jury.
|
||||||
"""
|
"""
|
||||||
src_sems = list_source_sems(sem, delai=delai)
|
src_sems = list_source_sems(sem, delai=delai)
|
||||||
@ -276,8 +277,8 @@ def formsemestre_inscr_passage(
|
|||||||
submitted=False,
|
submitted=False,
|
||||||
dialog_confirmed=False,
|
dialog_confirmed=False,
|
||||||
ignore_jury=False,
|
ignore_jury=False,
|
||||||
):
|
) -> str:
|
||||||
"""Form. pour inscription des etudiants d'un semestre dans un autre
|
"""Page Form. pour inscription des etudiants d'un semestre dans un autre
|
||||||
(donné par formsemestre_id).
|
(donné par formsemestre_id).
|
||||||
Permet de selectionner parmi les etudiants autorisés à s'inscrire.
|
Permet de selectionner parmi les etudiants autorisés à s'inscrire.
|
||||||
Principe:
|
Principe:
|
||||||
@ -285,8 +286,8 @@ def formsemestre_inscr_passage(
|
|||||||
- afficher chaque semestre "boites" avec cases à cocher
|
- 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
|
- 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
|
- on peut choisir les groupes TD, TP, TA
|
||||||
- seuls les etudiants non inscrits changent (de groupe)
|
- seuls les étudiants non inscrits changent (de groupe)
|
||||||
- les etudiants inscrit qui se trouvent décochés sont désinscrits
|
- les étudiants inscrit qui se trouvent décochés sont désinscrits
|
||||||
- Confirmation: indiquer les étudiants inscrits et ceux désinscrits, le total courant.
|
- 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
|
a_desinscrire = inscrits_set - etuds_set
|
||||||
else:
|
else:
|
||||||
a_inscrire = a_desinscrire = []
|
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:
|
if not submitted:
|
||||||
H += build_page(
|
H += _build_page(
|
||||||
sem,
|
sem,
|
||||||
auth_etuds_by_sem,
|
auth_etuds_by_sem,
|
||||||
inscrits,
|
inscrits,
|
||||||
@ -343,7 +342,7 @@ def formsemestre_inscr_passage(
|
|||||||
if not dialog_confirmed:
|
if not dialog_confirmed:
|
||||||
# Confirmation
|
# Confirmation
|
||||||
if a_inscrire:
|
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):
|
for etud in set_to_sorted_etud_list(a_inscrire):
|
||||||
H.append("<li>%(nomprenom)s</li>" % etud)
|
H.append("<li>%(nomprenom)s</li>" % etud)
|
||||||
H.append("</ol>")
|
H.append("</ol>")
|
||||||
@ -354,7 +353,7 @@ def formsemestre_inscr_passage(
|
|||||||
H.append('<li class="inscrailleurs">%(nomprenom)s</li>' % etud)
|
H.append('<li class="inscrailleurs">%(nomprenom)s</li>' % etud)
|
||||||
H.append("</ul>")
|
H.append("</ul>")
|
||||||
if a_desinscrire:
|
if a_desinscrire:
|
||||||
H.append("<h3>Etudiants à désinscrire</h3><ol>")
|
H.append("<h3>Étudiants à désinscrire</h3><ol>")
|
||||||
for etudid in a_desinscrire:
|
for etudid in a_desinscrire:
|
||||||
H.append(
|
H.append(
|
||||||
'<li class="desinscription">%(nomprenom)s</li>'
|
'<li class="desinscription">%(nomprenom)s</li>'
|
||||||
@ -384,21 +383,29 @@ def formsemestre_inscr_passage(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
# Inscription des étudiants au nouveau semestre:
|
with sco_cache.DeferredSemCacheManager():
|
||||||
do_inscrit(
|
# Inscription des étudiants au nouveau semestre:
|
||||||
sem,
|
do_inscrit(
|
||||||
a_inscrire,
|
sem,
|
||||||
inscrit_groupes=inscrit_groupes,
|
a_inscrire,
|
||||||
)
|
inscrit_groupes=inscrit_groupes,
|
||||||
|
)
|
||||||
# Desincriptions:
|
# Désinscriptions:
|
||||||
do_desinscrit(sem, a_desinscrire)
|
do_desinscrit(sem, a_desinscrire)
|
||||||
|
|
||||||
H.append(
|
H.append(
|
||||||
"""<h3>Opération effectuée</h3>
|
f"""<h3>Opération effectuée</h3>
|
||||||
<ul><li><a class="stdlink" href="formsemestre_inscr_passage?formsemestre_id=%s">Continuer les inscriptions</a></li>
|
<ul>
|
||||||
<li><a class="stdlink" href="formsemestre_status?formsemestre_id=%s">Tableau de bord du semestre</a></li>"""
|
<li><a class="stdlink" href="{
|
||||||
% (formsemestre_id, formsemestre_id)
|
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)
|
partition = sco_groups.formsemestre_get_main_partition(formsemestre_id)
|
||||||
if (
|
if (
|
||||||
@ -410,7 +417,7 @@ def formsemestre_inscr_passage(
|
|||||||
H.append(
|
H.append(
|
||||||
f"""<li><a class="stdlink" href="{
|
f"""<li><a class="stdlink" href="{
|
||||||
url_for("scolar.affect_groups",
|
url_for("scolar.affect_groups",
|
||||||
scodoc_dept=g.scodoc_dept, partition_id=partition["partition_id"])
|
scodoc_dept=g.scodoc_dept, partition_id=partition["partition_id"])
|
||||||
}">Répartir les groupes de {partition["partition_name"]}</a></li>
|
}">Répartir les groupes de {partition["partition_name"]}</a></li>
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
@ -420,7 +427,7 @@ def formsemestre_inscr_passage(
|
|||||||
return "\n".join(H)
|
return "\n".join(H)
|
||||||
|
|
||||||
|
|
||||||
def build_page(
|
def _build_page(
|
||||||
sem,
|
sem,
|
||||||
auth_etuds_by_sem,
|
auth_etuds_by_sem,
|
||||||
inscrits,
|
inscrits,
|
||||||
@ -429,6 +436,7 @@ def build_page(
|
|||||||
inscrit_groupes=False,
|
inscrit_groupes=False,
|
||||||
ignore_jury=False,
|
ignore_jury=False,
|
||||||
):
|
):
|
||||||
|
formsemestre: FormSemestre = FormSemestre.query.get(sem["formsemestre_id"])
|
||||||
inscrit_groupes = int(inscrit_groupes)
|
inscrit_groupes = int(inscrit_groupes)
|
||||||
ignore_jury = int(ignore_jury)
|
ignore_jury = int(ignore_jury)
|
||||||
if inscrit_groupes:
|
if inscrit_groupes:
|
||||||
@ -443,27 +451,36 @@ def build_page(
|
|||||||
html_sco_header.html_sem_header(
|
html_sco_header.html_sem_header(
|
||||||
"Passages dans le semestre", with_page_header=False
|
"Passages dans le semestre", with_page_header=False
|
||||||
),
|
),
|
||||||
"""<form name="f" method="post" action="%s">""" % request.base_url,
|
f"""<form name="f" method="post" action="{request.base_url}">
|
||||||
"""<input type="hidden" name="formsemestre_id" value="%(formsemestre_id)s"/>
|
|
||||||
<input type="submit" name="submitted" value="Appliquer les modifications"/>
|
<input type="hidden" name="formsemestre_id" value="{sem['formsemestre_id']}"/>
|
||||||
<a href="#help">aide</a>
|
|
||||||
"""
|
<input type="submit" name="submitted" value="Appliquer les modifications"/>
|
||||||
% sem, # "
|
<a href="#help">aide</a>
|
||||||
"""<input name="inscrit_groupes" type="checkbox" value="1" %s>inscrire aux mêmes groupes</input>"""
|
|
||||||
% inscrit_groupes_checked,
|
<input name="inscrit_groupes" type="checkbox" value="1"
|
||||||
"""<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>"""
|
{inscrit_groupes_checked}>inscrire aux mêmes groupes</input>
|
||||||
% ignore_jury_checked,
|
|
||||||
"""<div class="pas_recap">Actuellement <span id="nbinscrits">%s</span> inscrits
|
<input name="ignore_jury" type="checkbox" value="1" onchange="document.f.submit()"
|
||||||
et %d candidats supplémentaires
|
{ignore_jury_checked}>inclure tous les étudiants (même sans décision de jury)</input>
|
||||||
</div>"""
|
|
||||||
% (len(inscrits), len(candidats_non_inscrits)),
|
<div class="pas_recap">Actuellement <span id="nbinscrits">{len(inscrits)}</span> inscrits
|
||||||
etuds_select_boxes(auth_etuds_by_sem, inscrits_ailleurs),
|
et {len(candidats_non_inscrits)} candidats supplémentaires
|
||||||
"""<p/><input type="submit" name="submitted" value="Appliquer les modifications"/>""",
|
</div>
|
||||||
formsemestre_inscr_passage_help(sem),
|
|
||||||
"""</form>""",
|
<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 = []
|
empty_sems = []
|
||||||
for formsemestre_id in auth_etuds_by_sem.keys():
|
for formsemestre_id in auth_etuds_by_sem.keys():
|
||||||
if not auth_etuds_by_sem[formsemestre_id]["etuds"]:
|
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>"""
|
"""<div class="pas_empty_sems"><h3>Autres semestres sans candidats :</h3><ul>"""
|
||||||
)
|
)
|
||||||
for infos in empty_sems:
|
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>""")
|
H.append("""</ul></div>""")
|
||||||
|
|
||||||
return H
|
return H
|
||||||
|
Loading…
Reference in New Issue
Block a user