diff --git a/app/but/bulletin_but.py b/app/but/bulletin_but.py index 8bdab7b48..e25074ad1 100644 --- a/app/but/bulletin_but.py +++ b/app/but/bulletin_but.py @@ -345,8 +345,8 @@ class BulletinBUT: - Si force_publishing, rempli le bulletin même si bul_hide_xml est vrai (bulletins non publiés). """ - if version not in scu.BULLETINS_VERSIONS: - raise ScoValueError("version de bulletin demandée invalide") + if version not in scu.BULLETINS_VERSIONS_BUT: + raise ScoValueError("bulletin_etud: version de bulletin demandée invalide") res = self.res formsemestre = res.formsemestre etat_inscription = etud.inscription_etat(formsemestre.id) diff --git a/app/but/bulletin_but_court.py b/app/but/bulletin_but_court.py index 59f77b20b..9010ae350 100644 --- a/app/but/bulletin_but_court.py +++ b/app/but/bulletin_but_court.py @@ -83,12 +83,16 @@ def bulletin_but(formsemestre_id: int, etudid: int = None, fmt="html"): ) -def bulletin_but_court_pdf_frag(etud: Identite, formsemestre: FormSemestre) -> bytes: +def bulletin_but_court_pdf_frag( + etud: Identite, formsemestre: FormSemestre, stand_alone=False +) -> bytes: """Le code PDF d'un bulletin BUT court, à intégrer dans un document (pour les classeurs de tous les bulletins) """ args = _build_bulletin_but_infos(etud, formsemestre) - return bulletin_but_court_pdf.make_bulletin_but_court_pdf(args, stand_alone=False) + return bulletin_but_court_pdf.make_bulletin_but_court_pdf( + args, stand_alone=stand_alone + ) def _build_bulletin_but_infos( diff --git a/app/scodoc/sco_archives.py b/app/scodoc/sco_archives.py index 05e75f1f1..8d91bbcf1 100644 --- a/app/scodoc/sco_archives.py +++ b/app/scodoc/sco_archives.py @@ -346,7 +346,9 @@ def do_formsemestre_archive( ) if bul_version not in scu.BULLETINS_VERSIONS: - raise ScoValueError("version de bulletin demandée invalide") + raise ScoValueError( + "do_formsemestre_archive: version de bulletin demandée invalide" + ) formsemestre = FormSemestre.get_formsemestre(formsemestre_id) res: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre) sem_archive_id = formsemestre_id @@ -505,7 +507,7 @@ enregistrés et non modifiables, on peut les retrouver ultérieurement. """, ] F = [ - f"""
Note: les documents sont aussi affectés par les réglages sur la page
+ f""" Note: les documents sont aussi affectés par les réglages sur la page
"Paramétrage"
diff --git a/app/scodoc/sco_bulletins.py b/app/scodoc/sco_bulletins.py
index e0b64eb5c..82d8da5aa 100644
--- a/app/scodoc/sco_bulletins.py
+++ b/app/scodoc/sco_bulletins.py
@@ -513,8 +513,8 @@ def _ue_mod_bulletin(
sco_users.user_info(modimpl["responsable_id"])["nomcomplet"],
)
link_mod = f""""""
@@ -576,7 +576,7 @@ def _ue_mod_bulletin(
"name"
] = f"""{e.description or ""} {
e.descr_date()
- if e.date_debut and not is_complete
+ if e.date_debut and not is_complete
else ""}"""
e_dict["target_html"] = url_for(
"notes.evaluation_listenotes",
@@ -985,6 +985,8 @@ def do_formsemestre_bulletinetud(
où bul est str ou bytes au format demandé (html, pdf, pdfmail, pdfpart, xml, json)
et filigranne est un message à placer en "filigranne" (eg "Provisoire").
"""
+ from app.but import bulletin_but_court
+
fmt = fmt or "html"
if fmt == "xml":
bul = sco_bulletins_xml.make_xml_formsemestre_bulletinetud(
@@ -1045,9 +1047,19 @@ def do_formsemestre_bulletinetud(
if not can_send_bulletin_by_mail(formsemestre.id):
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
- pdfdata, filename = sco_bulletins_generator.make_formsemestre_bulletin_etud(
- bul_dict, etud=etud, formsemestre=formsemestre, version=version, fmt="pdf"
- )
+ if version == "butcourt":
+ pdfdata = bulletin_but_court.bulletin_but_court_pdf_frag(
+ etud, formsemestre, stand_alone=True
+ )
+ filename = scu.bul_filename(formsemestre, etud, prefix="bul-court")
+ else:
+ pdfdata, filename = sco_bulletins_generator.make_formsemestre_bulletin_etud(
+ bul_dict,
+ etud=etud,
+ formsemestre=formsemestre,
+ version=version,
+ fmt="pdf",
+ )
if prefer_mail_perso:
recipient_addr = (
diff --git a/app/scodoc/sco_bulletins_pdf.py b/app/scodoc/sco_bulletins_pdf.py
index 658bcf50f..cf0d1348c 100644
--- a/app/scodoc/sco_bulletins_pdf.py
+++ b/app/scodoc/sco_bulletins_pdf.py
@@ -222,7 +222,9 @@ def get_formsemestre_bulletins_pdf(formsemestre_id, version="selectedevals"):
else scu.BULLETINS_VERSIONS
)
if version not in versions:
- raise ScoValueError("version de bulletin demandée invalide !")
+ raise ScoValueError(
+ "get_formsemestre_bulletins_pdf: version de bulletin demandée invalide !"
+ )
cached = sco_cache.SemBulletinsPDFCache.get(str(formsemestre_id) + "_" + version)
if cached:
return cached[1], cached[0]
diff --git a/app/views/notes.py b/app/views/notes.py
index c6f8f5482..b7fbbd915 100644
--- a/app/views/notes.py
+++ b/app/views/notes.py
@@ -288,7 +288,9 @@ def formsemestre_bulletinetud(
):
fmt = fmt or "html"
if version not in scu.BULLETINS_VERSIONS_BUT:
- raise ScoValueError("version de bulletin demandée invalide")
+ raise ScoValueError(
+ "formsemestre_bulletinetud: version de bulletin demandée invalide"
+ )
if not isinstance(etudid, int):
raise ScoInvalidIdType("formsemestre_bulletinetud: etudid must be an integer !")
if formsemestre_id is not None and not isinstance(formsemestre_id, int):
@@ -1881,13 +1883,14 @@ _EXPL_BULL = """Versions des bulletins:
@scodoc7func
def formsemestre_bulletins_pdf_choice(formsemestre_id, version=None):
"""Choix version puis envoi classeur bulletins pdf"""
+ formsemestre = FormSemestre.get_formsemestre(formsemestre_id)
if version:
pdfdoc, filename = sco_bulletins_pdf.get_formsemestre_bulletins_pdf(
formsemestre_id, version=version
)
return scu.sendPDFFile(pdfdoc, filename)
- return formsemestre_bulletins_choice(
- formsemestre_id,
+ return _formsemestre_bulletins_choice(
+ formsemestre,
title="Choisir la version des bulletins à générer",
explanation=_EXPL_BULL,
)
@@ -1900,7 +1903,7 @@ def formsemestre_bulletins_pdf_choice(formsemestre_id, version=None):
def etud_bulletins_pdf(etudid, version="selectedevals"):
"Publie tous les bulletins d'un etudiants dans un classeur PDF"
if version not in scu.BULLETINS_VERSIONS:
- raise ScoValueError("version de bulletin demandée invalide")
+ raise ScoValueError("etud_bulletins_pdf: version de bulletin demandée invalide")
pdfdoc, filename = sco_bulletins_pdf.get_etud_bulletins_pdf(etudid, version=version)
return scu.sendPDFFile(pdfdoc, filename)
@@ -1927,15 +1930,20 @@ def formsemestre_bulletins_mailetuds_choice(
prefer_mail_perso=prefer_mail_perso,
)
)
-
+ formsemestre = FormSemestre.get_formsemestre(formsemestre_id)
expl_bull = """Versions des bulletins:
"""
- return formsemestre_bulletins_choice(
- formsemestre_id,
+ """
+ if formsemestre.formation.is_apc():
+ expl_bull += """
+
"
+ return _formsemestre_bulletins_choice(
+ formsemestre,
title="Choisir la version des bulletins à envoyer par mail",
explanation="""Chaque étudiant (non démissionnaire ni défaillant)
ayant une adresse mail connue de ScoDoc
@@ -1947,23 +1955,24 @@ def formsemestre_bulletins_mailetuds_choice(
# not published
-def formsemestre_bulletins_choice(
- formsemestre_id, title="", explanation="", choose_mail=False
+def _formsemestre_bulletins_choice(
+ formsemestre: FormSemestre, title="", explanation="", choose_mail=False
):
"""Choix d'une version de bulletin"""
+ versions = (
+ scu.BULLETINS_VERSIONS_BUT
+ if formsemestre.formation.is_apc()
+ else scu.BULLETINS_VERSIONS
+ )
H = [
html_sco_header.html_sem_header(title),
f"""