forked from ScoDoc/ScoDoc
Envoi des bulletins par mail: exclu démissions/défaillances. Closes #356
This commit is contained in:
parent
91e508bf9f
commit
318f6f8a65
@ -1913,7 +1913,6 @@ def formsemestre_bulletins_mailetuds_choice(
|
||||
):
|
||||
"""Choix version puis envoi classeur bulletins pdf"""
|
||||
if version:
|
||||
# XXX à tester
|
||||
return flask.redirect(
|
||||
url_for(
|
||||
"notes.formsemestre_bulletins_mailetuds",
|
||||
@ -1925,11 +1924,19 @@ def formsemestre_bulletins_mailetuds_choice(
|
||||
)
|
||||
)
|
||||
|
||||
expl_bull = """Versions des bulletins:<ul><li><bf>courte</bf>: moyennes des modules</li><li><bf>intermédiaire</bf>: moyennes des modules et notes des évaluations sélectionnées</li><li><bf>complète</bf>: toutes les notes</li><ul>"""
|
||||
expl_bull = """Versions des bulletins:
|
||||
<ul>
|
||||
<li><b>courte</b>: moyennes des modules</li>
|
||||
<li><b>intermédiaire</b>: moyennes des modules et notes des évaluations sélectionnées</li>
|
||||
<li><b>complète</b>: toutes les notes</li>
|
||||
<ul>"""
|
||||
return formsemestre_bulletins_choice(
|
||||
formsemestre_id,
|
||||
title="Choisir la version des bulletins à envoyer par mail",
|
||||
explanation="Chaque étudiant ayant une adresse mail connue de ScoDoc recevra une copie PDF de son bulletin de notes, dans la version choisie.</p><p>"
|
||||
explanation="""Chaque étudiant (non démissionnaire ni défaillant)
|
||||
ayant une adresse mail connue de ScoDoc
|
||||
recevra une copie PDF de son bulletin de notes, dans la version choisie.
|
||||
</p><p>"""
|
||||
+ expl_bull,
|
||||
choose_mail=True,
|
||||
)
|
||||
@ -1942,27 +1949,29 @@ def formsemestre_bulletins_choice(
|
||||
"""Choix d'une version de bulletin"""
|
||||
H = [
|
||||
html_sco_header.html_sem_header(title),
|
||||
"""
|
||||
<form name="f" method="GET" action="%s">
|
||||
<input type="hidden" name="formsemestre_id" value="%s"></input>
|
||||
"""
|
||||
% (request.base_url, formsemestre_id),
|
||||
f"""
|
||||
<form name="f" method="GET" action="{request.base_url}">
|
||||
<input type="hidden" name="formsemestre_id" value="{formsemestre_id}"></input>
|
||||
""",
|
||||
]
|
||||
H.append("""<select name="version" class="noprint">""")
|
||||
for (v, e) in (
|
||||
for (version, description) in (
|
||||
("short", "Version courte"),
|
||||
("selectedevals", "Version intermédiaire"),
|
||||
("long", "Version complète"),
|
||||
):
|
||||
H.append('<option value="%s">%s</option>' % (v, e))
|
||||
H.append(f"""<option value="{version}">{description}</option>""")
|
||||
|
||||
H.append("""</select> <input type="submit" value="Générer"/>""")
|
||||
if choose_mail:
|
||||
H.append(
|
||||
"""<div><input type="checkbox" name="prefer_mail_perso" value="1">Utiliser si possible les adresses personnelles</div>"""
|
||||
"""<div>
|
||||
<input type="checkbox" name="prefer_mail_perso" value="1"
|
||||
/>Utiliser si possible les adresses personnelles
|
||||
</div>"""
|
||||
)
|
||||
|
||||
H.append("""<p class="help">""" + explanation + """</p>""")
|
||||
H.append(f"""<p class="help">{explanation}</p>""")
|
||||
|
||||
return "\n".join(H) + html_sco_header.sco_footer()
|
||||
|
||||
@ -1977,20 +1986,30 @@ def formsemestre_bulletins_mailetuds(
|
||||
dialog_confirmed=False,
|
||||
prefer_mail_perso=0,
|
||||
):
|
||||
"envoi a chaque etudiant (inscrit et ayant un mail) son bulletin"
|
||||
"""Envoie à chaque etudiant son bulletin
|
||||
(inscrit non démissionnaire ni défaillant et ayant un mail renseigné dans ScoDoc)
|
||||
"""
|
||||
prefer_mail_perso = int(prefer_mail_perso)
|
||||
formsemestre = FormSemestre.query.get_or_404(formsemestre_id)
|
||||
nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre)
|
||||
etudids = nt.get_etudids()
|
||||
inscriptions = [
|
||||
inscription
|
||||
for inscription in formsemestre.inscriptions
|
||||
if inscription.etat == scu.INSCRIT
|
||||
]
|
||||
#
|
||||
if not sco_bulletins.can_send_bulletin_by_mail(formsemestre_id):
|
||||
raise AccessDenied("vous n'avez pas le droit d'envoyer les bulletins")
|
||||
# Confirmation dialog
|
||||
if not dialog_confirmed:
|
||||
return scu.confirm_dialog(
|
||||
"<h2>Envoyer les %d bulletins par e-mail aux étudiants ?" % len(etudids),
|
||||
f"<h2>Envoyer les {len(inscriptions)} bulletins par e-mail aux étudiants inscrits ?",
|
||||
dest_url="",
|
||||
cancel_url="formsemestre_status?formsemestre_id=%s" % formsemestre_id,
|
||||
cancel_url=url_for(
|
||||
"notes.formsemestre_status",
|
||||
scodoc_dept=g.scodoc_dept,
|
||||
formsemestre_id=formsemestre_id,
|
||||
),
|
||||
parameters={
|
||||
"version": version,
|
||||
"formsemestre_id": formsemestre_id,
|
||||
@ -2000,10 +2019,10 @@ def formsemestre_bulletins_mailetuds(
|
||||
|
||||
# Make each bulletin
|
||||
nb_sent = 0
|
||||
for etudid in etudids:
|
||||
for inscription in inscriptions:
|
||||
sent, _ = sco_bulletins.do_formsemestre_bulletinetud(
|
||||
formsemestre,
|
||||
etudid,
|
||||
inscription.etudid,
|
||||
version=version,
|
||||
prefer_mail_perso=prefer_mail_perso,
|
||||
format="pdfmail",
|
||||
@ -2011,12 +2030,15 @@ def formsemestre_bulletins_mailetuds(
|
||||
if sent:
|
||||
nb_sent += 1
|
||||
#
|
||||
return (
|
||||
html_sco_header.sco_header()
|
||||
+ '<p>%d bulletins sur %d envoyés par mail !</p><p><a class="stdlink" href="formsemestre_status?formsemestre_id=%s">continuer</a></p>'
|
||||
% (nb_sent, len(etudids), formsemestre_id)
|
||||
+ html_sco_header.sco_footer()
|
||||
)
|
||||
return f"""
|
||||
{html_sco_header.sco_header()}
|
||||
<p>{nb_sent} bulletins sur {len(inscriptions)} envoyés par mail !</p>
|
||||
<p><a class="stdlink" href="{url_for('notes.formsemestre_status',
|
||||
scodoc_dept=g.scodoc_dept,
|
||||
formsemestre_id=formsemestre_id)
|
||||
}">continuer</a></p>
|
||||
{html_sco_header.sco_footer()}
|
||||
"""
|
||||
|
||||
|
||||
sco_publish(
|
||||
|
Loading…
Reference in New Issue
Block a user