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"""
|
"""Choix version puis envoi classeur bulletins pdf"""
|
||||||
if version:
|
if version:
|
||||||
# XXX à tester
|
|
||||||
return flask.redirect(
|
return flask.redirect(
|
||||||
url_for(
|
url_for(
|
||||||
"notes.formsemestre_bulletins_mailetuds",
|
"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(
|
return formsemestre_bulletins_choice(
|
||||||
formsemestre_id,
|
formsemestre_id,
|
||||||
title="Choisir la version des bulletins à envoyer par mail",
|
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,
|
+ expl_bull,
|
||||||
choose_mail=True,
|
choose_mail=True,
|
||||||
)
|
)
|
||||||
@ -1942,27 +1949,29 @@ def formsemestre_bulletins_choice(
|
|||||||
"""Choix d'une version de bulletin"""
|
"""Choix d'une version de bulletin"""
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.html_sem_header(title),
|
html_sco_header.html_sem_header(title),
|
||||||
"""
|
f"""
|
||||||
<form name="f" method="GET" action="%s">
|
<form name="f" method="GET" action="{request.base_url}">
|
||||||
<input type="hidden" name="formsemestre_id" value="%s"></input>
|
<input type="hidden" name="formsemestre_id" value="{formsemestre_id}"></input>
|
||||||
"""
|
""",
|
||||||
% (request.base_url, formsemestre_id),
|
|
||||||
]
|
]
|
||||||
H.append("""<select name="version" class="noprint">""")
|
H.append("""<select name="version" class="noprint">""")
|
||||||
for (v, e) in (
|
for (version, description) in (
|
||||||
("short", "Version courte"),
|
("short", "Version courte"),
|
||||||
("selectedevals", "Version intermédiaire"),
|
("selectedevals", "Version intermédiaire"),
|
||||||
("long", "Version complète"),
|
("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"/>""")
|
H.append("""</select> <input type="submit" value="Générer"/>""")
|
||||||
if choose_mail:
|
if choose_mail:
|
||||||
H.append(
|
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()
|
return "\n".join(H) + html_sco_header.sco_footer()
|
||||||
|
|
||||||
@ -1977,20 +1986,30 @@ def formsemestre_bulletins_mailetuds(
|
|||||||
dialog_confirmed=False,
|
dialog_confirmed=False,
|
||||||
prefer_mail_perso=0,
|
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)
|
prefer_mail_perso = int(prefer_mail_perso)
|
||||||
formsemestre = FormSemestre.query.get_or_404(formsemestre_id)
|
formsemestre = FormSemestre.query.get_or_404(formsemestre_id)
|
||||||
nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre)
|
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):
|
if not sco_bulletins.can_send_bulletin_by_mail(formsemestre_id):
|
||||||
raise AccessDenied("vous n'avez pas le droit d'envoyer les bulletins")
|
raise AccessDenied("vous n'avez pas le droit d'envoyer les bulletins")
|
||||||
# Confirmation dialog
|
# Confirmation dialog
|
||||||
if not dialog_confirmed:
|
if not dialog_confirmed:
|
||||||
return scu.confirm_dialog(
|
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="",
|
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={
|
parameters={
|
||||||
"version": version,
|
"version": version,
|
||||||
"formsemestre_id": formsemestre_id,
|
"formsemestre_id": formsemestre_id,
|
||||||
@ -2000,10 +2019,10 @@ def formsemestre_bulletins_mailetuds(
|
|||||||
|
|
||||||
# Make each bulletin
|
# Make each bulletin
|
||||||
nb_sent = 0
|
nb_sent = 0
|
||||||
for etudid in etudids:
|
for inscription in inscriptions:
|
||||||
sent, _ = sco_bulletins.do_formsemestre_bulletinetud(
|
sent, _ = sco_bulletins.do_formsemestre_bulletinetud(
|
||||||
formsemestre,
|
formsemestre,
|
||||||
etudid,
|
inscription.etudid,
|
||||||
version=version,
|
version=version,
|
||||||
prefer_mail_perso=prefer_mail_perso,
|
prefer_mail_perso=prefer_mail_perso,
|
||||||
format="pdfmail",
|
format="pdfmail",
|
||||||
@ -2011,12 +2030,15 @@ def formsemestre_bulletins_mailetuds(
|
|||||||
if sent:
|
if sent:
|
||||||
nb_sent += 1
|
nb_sent += 1
|
||||||
#
|
#
|
||||||
return (
|
return f"""
|
||||||
html_sco_header.sco_header()
|
{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>'
|
<p>{nb_sent} bulletins sur {len(inscriptions)} envoyés par mail !</p>
|
||||||
% (nb_sent, len(etudids), formsemestre_id)
|
<p><a class="stdlink" href="{url_for('notes.formsemestre_status',
|
||||||
+ html_sco_header.sco_footer()
|
scodoc_dept=g.scodoc_dept,
|
||||||
)
|
formsemestre_id=formsemestre_id)
|
||||||
|
}">continuer</a></p>
|
||||||
|
{html_sco_header.sco_footer()}
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
sco_publish(
|
sco_publish(
|
||||||
|
Loading…
Reference in New Issue
Block a user