diff --git a/app/scodoc/sco_inscr_passage.py b/app/scodoc/sco_inscr_passage.py
index c7bbe5a97..e88fa7968 100644
--- a/app/scodoc/sco_inscr_passage.py
+++ b/app/scodoc/sco_inscr_passage.py
@@ -625,104 +625,147 @@ def etuds_select_boxes(
for src_cat in auth_etuds_by_cat.keys():
infos = auth_etuds_by_cat[src_cat]["infos"]
infos["comment"] = infos.get("comment", "") # commentaire dans sous-titre boite
- help_txt = infos.get("help", "")
etuds = auth_etuds_by_cat[src_cat]["etuds"]
etuds.sort(key=itemgetter("nom"))
with_checkbox = (not read_only) and auth_etuds_by_cat[src_cat]["infos"].get(
"with_checkbox", True
)
- checkbox_name = auth_etuds_by_cat[src_cat]["infos"].get(
- "checkbox_name", "etuds"
- )
- etud_key = auth_etuds_by_cat[src_cat]["infos"].get("etud_key", "etudid")
if etuds or show_empty_boxes:
infos["nbetuds"] = len(etuds)
- H.append(
- """
-
-
(%(nbetuds)d étudiants%(comment)s)"""
- % infos
+ etuds_select_box(
+ etuds,
+ infos,
+ with_checkbox=with_checkbox,
+ sel_inscrits=sel_inscrits,
+ xls_url=xls_url,
+ inscrits_ailleurs=inscrits_ailleurs,
+ )
)
- if with_checkbox:
- H.append(
- """ (Select.
-
tous
-
aucun""" # "
- % infos
- )
- if sel_inscrits:
- H.append(
- """
inscrits"""
- % infos
- )
- if with_checkbox or sel_inscrits:
- H.append(")")
- if base_url and etuds:
- url = scu.build_url_query(base_url, export_cat_xls=src_cat)
- H.append(f'
{scu.ICON_XLS} ')
- H.append("
")
- for etud in etuds:
- if etud.get("inscrit", False):
- c = " deja-inscrit"
- checked = 'checked="checked"'
- else:
- checked = ""
- if etud["etudid"] in inscrits_ailleurs:
- c = " inscrit-ailleurs"
- else:
- c = ""
- sco_etud.format_etud_ident(etud)
- if etud["etudid"]:
- elink = f"""
{etud['nomprenom']}
- """
- else:
- # ce n'est pas un etudiant ScoDoc
- elink = etud["nomprenom"]
- if etud.get("datefinalisationinscription", None):
- elink += (
- '
'
- + " : inscription finalisée le "
- + etud["datefinalisationinscription"].strftime(scu.DATE_FMT)
- + ""
- )
+ H.append("
")
+ return "\n".join(H)
- if not etud.get("paiementinscription", True):
- elink += ' (non paiement)'
- H.append("""""" % c)
- if "etape" in etud:
- etape_str = etud["etape"] or ""
- else:
- etape_str = ""
- H.append("""%s""" % etape_str)
- if with_checkbox:
- H.append(
- """"""
- % (checkbox_name, etud[etud_key], checked)
- )
- H.append(elink)
- if with_checkbox:
- H.append("""""")
- H.append("
")
- H.append("")
+def etuds_select_box(
+ etuds: list[dict],
+ infos: dict,
+ with_checkbox: bool = True,
+ sel_inscrits: bool = True,
+ xls_url: str = "",
+ inscrits_ailleurs: set = None,
+) -> str:
+ """HTML pour une "boite" avec une liste d'étudiants à sélectionner"""
+ inscrits_ailleurs = inscrits_ailleurs or {}
+ box_id = infos["id"]
+ H = []
+ H.append(
+ f"""
+
+
(%(nbetuds)d étudiants%(comment)s)"""
+ % infos
+ )
+ if with_checkbox:
+ H.append(
+ f""" (Select.
+
tous
+
aucun"""
+ )
+ if sel_inscrits:
+ H.append(
+ f"""
inscrits"""
+ )
+ if with_checkbox or sel_inscrits:
+ H.append(")")
+ if xls_url:
+ H.append(f'
{scu.ICON_XLS} ')
+ H.append("
")
+ for etud in etuds:
+ is_inscrit = etud.get("inscrit", False)
+ extra_class = (
+ "deja-inscrit"
+ if is_inscrit
+ else ("inscrit-ailleurs" if etud["etudid"] in inscrits_ailleurs else "")
+ )
+ H.append(
+ _etud_row(
+ etud,
+ with_checkbox=with_checkbox,
+ checkbox_name=infos.get("checkbox_name", "etuds"),
+ etud_key=infos.get("etud_key", "etudid"),
+ is_inscrit=is_inscrit,
+ extra_class=extra_class,
+ )
+ )
H.append("
")
return "\n".join(H)
+def _etud_row(
+ etud: dict,
+ with_checkbox: bool = True,
+ checkbox_name: str = "etuds",
+ etud_key: str = "",
+ is_inscrit: bool = False,
+ extra_class: str = "",
+) -> str:
+ """HTML 'row' for this etud"""
+ H = []
+ nomprenom = scu.format_nomprenom(etud)
+ if etud["etudid"]:
+ elink = f"""
+ """
+ else:
+ # ce n'est pas un etudiant ScoDoc
+ elink = nomprenom
+
+ if etud.get("datefinalisationinscription", None):
+ elink += (
+ ''
+ + " : inscription finalisée le "
+ + etud["datefinalisationinscription"].strftime(scu.DATE_FMT)
+ + ""
+ )
+
+ if not etud.get("paiementinscription", True):
+ elink += ' (non paiement)'
+
+ H.append(f"""")
+ return "\n".join(H)
+
+
def etuds_select_box_xls(src_cat):
"export a box to excel"
etuds = src_cat["etuds"]