Page passage d'un semestre à l'autre: améliore listes

This commit is contained in:
Emmanuel Viennet 2024-10-31 09:20:45 +01:00
parent dc009856d6
commit e772a29363
3 changed files with 70 additions and 44 deletions

View File

@ -349,6 +349,7 @@ def formsemestre_inscr_passage(
inscrit_groupes=inscrit_groupes,
inscrit_parcours=inscrit_parcours,
ignore_jury=ignore_jury,
with_apo_cols=False,
)
else:
if not dialog_confirmed:
@ -447,9 +448,10 @@ def formsemestre_inscr_passage(
"""
)
#
return render_template(
"sco_page.j2", title="Passage des étudiants", content="\n".join(H)
"formsemestre/synchro_etuds.j2",
title="Passage des étudiants",
content="\n".join(H),
)
@ -462,6 +464,7 @@ def _build_page(
inscrit_groupes=False,
inscrit_parcours=False,
ignore_jury=False,
with_apo_cols: bool = True,
):
inscrit_groupes = int(inscrit_groupes)
inscrit_parcours = int(inscrit_parcours)
@ -506,7 +509,7 @@ def _build_page(
de ce semestre ({formsemestre.date_debut.strftime(scu.DATE_FMT)}) sont pris en
compte.</em>
</div>
{etuds_select_boxes(auth_etuds_by_sem, inscrits_ailleurs)}
{etuds_select_boxes(auth_etuds_by_sem, inscrits_ailleurs, with_apo_cols=with_apo_cols)}
<input type="submit" name="submitted" value="Appliquer les modifications"/>
@ -586,6 +589,7 @@ def etuds_select_boxes(
export_cat_xls=None,
base_url="",
read_only=False,
with_apo_cols: bool = True,
):
"""Boites pour selection étudiants par catégorie
auth_etuds_by_cat = { category : { 'info' : {}, 'etuds' : ... }
@ -598,22 +602,7 @@ def etuds_select_boxes(
return etuds_select_box_xls(auth_etuds_by_cat[export_cat_xls])
H = [
"""<script type="text/javascript">
function sem_select(formsemestre_id, state) {
var elems = document.getElementById(formsemestre_id).getElementsByTagName("input");
for (var i =0; i < elems.length; i++) { elems[i].checked=state; }
}
function sem_select_inscrits(formsemestre_id) {
var elems = document.getElementById(formsemestre_id).getElementsByTagName("input");
for (var i =0; i < elems.length; i++) {
if (elems[i].parentNode.className.indexOf('inscrit') >= 0) {
elems[i].checked=true;
} else {
elems[i].checked=false;
}
}
}
</script>
"""
<div class="etuds_select_boxes">"""
] # "
# Élimine les boites vides:
@ -645,6 +634,7 @@ def etuds_select_boxes(
sel_inscrits=sel_inscrits,
xls_url=xls_url,
inscrits_ailleurs=inscrits_ailleurs,
with_apo_cols=with_apo_cols,
)
)
@ -659,6 +649,7 @@ def etuds_select_box(
sel_inscrits: bool = True,
xls_url: str = "",
inscrits_ailleurs: set = None,
with_apo_cols: bool = True,
) -> str:
"""HTML pour une "boite" avec une liste d'étudiants à sélectionner"""
inscrits_ailleurs = inscrits_ailleurs or {}
@ -693,16 +684,17 @@ def etuds_select_box(
if xls_url:
H.append(f'<a href="{xls_url}">{scu.ICON_XLS}</a>&nbsp;')
H.append("</div>")
checkbox_title = "<th></th>" if with_checkbox else ""
checkbox_title = """<th class="no-sort"></th>""" if with_checkbox else ""
ths = (
f"<th>Étape</th>{checkbox_title}<th>Nom</th><th>Paiement</th><th>Finalisé</th>"
if with_apo_cols
else f"{checkbox_title}<th>Nom</th>"
)
H.append(
f"""<table class="etuds-box">
<thead>
<tr>
<th>Étape</th>
{checkbox_title}
<th>Nom</th>
<th>Paiement</th>
<th>Finalisé</th>
{ths}
</tr>
</thead>
<tbody>
@ -723,6 +715,7 @@ def etuds_select_box(
etud_key=infos.get("etud_key", "etudid"),
is_inscrit=is_inscrit,
extra_class=extra_class,
with_apo_cols=with_apo_cols,
)
)
H.append(
@ -741,6 +734,7 @@ def _etud_row(
etud_key: str = "",
is_inscrit: bool = False,
extra_class: str = "",
with_apo_cols: bool = True,
) -> str:
"""HTML 'row' for this etud"""
H = []
@ -768,23 +762,33 @@ def _etud_row(
)
paiement = etud.get("paiementinscription", True)
datefinalisation = etud.get("datefinalisationinscription")
H.append(
f"""
<tr class="{extra_class}">
<td class="etape">{etud.get("etape", "") or ""}</td>
{checkbox_cell}
<td data-order="{etud.get("nom", "").upper()}">{elink}</td>
<td class="paiement {'' if paiement else 'paspaye'}">{
'' if paiement else 'non paiement'
}</td>
<td class="finalise" data-order="{
datefinalisation.isoformat() if datefinalisation else ''
}">{"inscription finalisée le " + datefinalisation.strftime(scu.DATE_FMT)
if datefinalisation else "" }
</td>
</tr>
"""
)
if with_apo_cols:
H.append(
f"""
<tr class="{extra_class}">
<td class="etape">{etud.get("etape", "") or ""}</td>
{checkbox_cell}
<td data-order="{etud.get("nom", "").upper()}">{elink}</td>
<td class="paiement {'' if paiement else 'paspaye'}">{
'' if paiement else 'non paiement'
}</td>
<td class="finalise" data-order="{
datefinalisation.isoformat() if datefinalisation else ''
}">{"inscription finalisée le " + datefinalisation.strftime(scu.DATE_FMT)
if datefinalisation else "" }
</td>
</tr>
"""
)
else: # juste checkbox et nom
H.append(
f"""
<tr class="{extra_class}">
{checkbox_cell}
<td data-order="{etud.get("nom", "").upper()}">{elink}</td>
</tr>
"""
)
return "\n".join(H)

View File

@ -1,15 +1,37 @@
{% extends "sco_page.j2" %}
{% import 'wtf.j2' as wtf %}
{# Utilisé pour passage d'un semestre à l'autre et pour synchro Apogée #}
{% block scripts %}
{{ super() }}
<script>
function sem_select(formsemestre_id, state) {
let elems = document.getElementById(formsemestre_id).getElementsByTagName("input");
for (var i =0; i < elems.length; i++) {
elems[i].checked = state;
}
}
function sem_select_inscrits(formsemestre_id) {
var elems = document.getElementById(formsemestre_id).getElementsByTagName("input");
for (var i =0; i < elems.length; i++) {
if (elems[i].parentNode.className.indexOf('inscrit') >= 0) {
elems[i].checked=true;
} else {
elems[i].checked=false;
}
}
}
$(document).ready(function() {
$('.etuds-box').DataTable({
paging: false,
autoWidth: false,
searching: false,
info: false // Disable the "Showing 1 to X of X entries" information
info: false, // Disable the "Showing 1 to X of X entries"
columnDefs: [
{ targets: 'no-sort', orderable: false } // Disable sorting on columns with class 'no-sort'
]
});
});
</script>

View File

@ -3,7 +3,7 @@
"Infos sur version ScoDoc"
SCOVERSION = "9.7.36"
SCOVERSION = "9.7.37"
SCONAME = "ScoDoc"