[print_status] On évite de crasher si le serveur SMTP nous demande d'attendre parce qu'on envoie trop de mails.4~
Ignore-this: f87d2d2dcc2cbbad5371478782157c66 darcs-hash:20121112184906-8ef3c-b962b40959a3bf17bc25a6b908f57579b5a3c9e4.gz
This commit is contained in:
parent
53430d490e
commit
80be53e2f5
1 changed files with 18 additions and 10 deletions
|
@ -19,7 +19,7 @@ sys.path.append("/usr/scripts/gestion")
|
||||||
import time
|
import time
|
||||||
import httplib2
|
import httplib2
|
||||||
import re
|
import re
|
||||||
from smtplib import SMTP
|
import smtplib
|
||||||
from ldap_crans import crans_ldap
|
from ldap_crans import crans_ldap
|
||||||
|
|
||||||
last_print_filename = "/var/run/print_status/last_print.txt"
|
last_print_filename = "/var/run/print_status/last_print.txt"
|
||||||
|
@ -84,6 +84,19 @@ def buildDate(date):
|
||||||
hour, minute, _ = hms.split(':')
|
hour, minute, _ = hms.split(':')
|
||||||
return u"le " + day + u" " + litMonths[int(month) - 1] + u" " + year + u" à " + hour + u":" + minute
|
return u"le " + day + u" " + litMonths[int(month) - 1] + u" " + year + u" à " + hour + u":" + minute
|
||||||
|
|
||||||
|
def sendMail(from_addr, to_addrs, mail_content):
|
||||||
|
"""Wrapper pour smtplib.sendmail(). Permet d'attendre un peu en cas d'erreur temporaire (typiquement, si on essaie d'envoyer trop de mails à la minute)."""
|
||||||
|
conn = SMTP(smtp_server)
|
||||||
|
try:
|
||||||
|
conn.sendmail(from_addr, to_addrs, mail_content)
|
||||||
|
except smtplib.SMTPSenderRefused as (code, _, _):
|
||||||
|
if code == 450:
|
||||||
|
time.sleep(65)
|
||||||
|
conn.sendmail(from_addr, to_addrs, mail_content)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
conn.quit()
|
||||||
|
|
||||||
http = httplib2.Http()
|
http = httplib2.Http()
|
||||||
|
|
||||||
# On récupère la liste des tâches et on enlève les entêtes.
|
# On récupère la liste des tâches et on enlève les entêtes.
|
||||||
|
@ -128,24 +141,19 @@ for item in task_list:
|
||||||
else:
|
else:
|
||||||
target = db_query['club'][0]
|
target = db_query['club'][0]
|
||||||
full_name = u"Club " + target.nom()
|
full_name = u"Club " + target.nom()
|
||||||
send_to = []
|
send_to = map(lambda aid : db.search("aid=" + aid)['adherent'][0].mail() + u"@crans.org", target.imprimeurs())
|
||||||
for aid in target.imprimeurs():
|
|
||||||
send_to.append(db.search("aid=" + aid)['adherent'][0].mail() + u"@crans.org")
|
|
||||||
historique = target.historique()
|
historique = target.historique()
|
||||||
historique.reverse() # Ce qu'on cherche a des chances d'être récent et donc d'être à la fin de l'historique.
|
historique.reverse() # Ce qu'on cherche a des chances d'être récent et donc d'être à la fin de l'historique.
|
||||||
for hist_line in historique:
|
for hist_line in historique:
|
||||||
if match_taskID.search(hist_line):
|
if match_taskID.search(hist_line):
|
||||||
filename = match_doc_name.search(hist_line).group()[1:]
|
filename = match_doc_name.search(hist_line).group()[1:]
|
||||||
break
|
break
|
||||||
conn = SMTP(smtp_server)
|
|
||||||
if result == "OK":
|
if result == "OK":
|
||||||
for dest in send_to:
|
mail_content = ok_mail % (error_send_to, u", ".join(send_to), filename, full_name, filename, date, error_send_to)
|
||||||
mail_content = ok_mail % (error_send_to, dest, filename, full_name, filename, date, error_send_to)
|
sendMail(error_send_to, send_to, mail_content.encode("utf-8"))
|
||||||
conn.sendmail(error_send_to, dest, mail_content.encode("utf-8"))
|
|
||||||
else:
|
else:
|
||||||
mail_content = error_mail % (error_send_to, error_send_to, filename, taskID, full_name, user, date, result, u"\n".join(send_to))
|
mail_content = error_mail % (error_send_to, error_send_to, filename, taskID, full_name, user, date, result, u"\n".join(send_to))
|
||||||
conn.sendmail(error_send_to, error_send_to, mail_content.encode("utf-8"))
|
sendMail(error_send_to, error_send_to, mail_content.encode("utf-8"))
|
||||||
conn.quit()
|
|
||||||
|
|
||||||
# Éventuellement, on met à jour le numéro de la dernière tâche traitée.
|
# Éventuellement, on met à jour le numéro de la dernière tâche traitée.
|
||||||
new_last = task_list[0].split(',', 1)[0]
|
new_last = task_list[0].split(',', 1)[0]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue