[print_status] On ne floode pas les adhérents si le script plante pour quelque raison que ce soit.
Ignore-this: fddc35e4f3a0aa990eb911ad2d23f353 Méchant, méchant monde réel. darcs-hash:20121114154455-8ef3c-1aadb11f9f0ff935cc216c09db70068a2363abd6.gz
This commit is contained in:
parent
e0afb6ca50
commit
ccdc74ba40
1 changed files with 16 additions and 11 deletions
|
@ -99,12 +99,14 @@ def sendMail(from_addr, to_addrs, mail_content):
|
||||||
|
|
||||||
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. Pour faire la requête, on doit récupérer un cookie de session.
|
||||||
# Pour faire la requête, on doit récupérer un cookie de session.
|
|
||||||
headers, _ = http.request("https://" + printer_host + "/twelcome.cgi?CorePGTAG=0&Dummy=" + getMSE())
|
headers, _ = http.request("https://" + printer_host + "/twelcome.cgi?CorePGTAG=0&Dummy=" + getMSE())
|
||||||
_, content = http.request("https://" + printer_host + "/pprint.csv?Flag=Csv_Data&LogType=0&Dummy=" + getMSE(), 'GET', headers={'Cookie': headers['set-cookie']})
|
_, content = http.request("https://" + printer_host + "/pprint.csv?Flag=Csv_Data&LogType=0&Dummy=" + getMSE(), 'GET', headers={'Cookie': headers['set-cookie']})
|
||||||
task_list = content.split('\n')
|
task_list = content.split('\n')
|
||||||
|
# On enlève les entêtes et les deux lignes vides à la fin de la liste.
|
||||||
task_list.pop(0)
|
task_list.pop(0)
|
||||||
|
task_list.pop()
|
||||||
|
task_list.pop()
|
||||||
|
|
||||||
# On récupère la dernière tâche à avoir été traitée la dernière fois quel le script a été lancé.
|
# On récupère la dernière tâche à avoir été traitée la dernière fois quel le script a été lancé.
|
||||||
# Si le fichier n'existe pas, on le crée en mettant la première tâche parmi celles que l'on vient de récupérer, et on s'arrête là.
|
# Si le fichier n'existe pas, on le crée en mettant la première tâche parmi celles que l'on vient de récupérer, et on s'arrête là.
|
||||||
|
@ -121,12 +123,18 @@ except:
|
||||||
db = crans_ldap()
|
db = crans_ldap()
|
||||||
match_doc_name = re.compile(r"/[^/]*\.pdf")
|
match_doc_name = re.compile(r"/[^/]*\.pdf")
|
||||||
|
|
||||||
# On parcoure les tâches récupérées et qui n'ont pas déja été traitées, et on agit en conséquence.
|
# On parcoure les tâches récupérées et on ne garde que celles qui n'ont pas déja été traitées.
|
||||||
|
# Au passage, on inverse leur ordre pour traiter la plus ancienne en premier.
|
||||||
|
# Ainsi, si le script plante, on n'envoie pas un mail aux adhérents à chaque fois que le cron le relance.
|
||||||
|
tasks_to_treat = []
|
||||||
for item in task_list:
|
for item in task_list:
|
||||||
fields = item.split(',', 6)
|
if item.split(',', 1)[0] == last:
|
||||||
# On notera la présence d'une tâche complètement vide à la fin de la liste.
|
|
||||||
if fields[0] == last or fields[0] == '':
|
|
||||||
break
|
break
|
||||||
|
tasks_to_treat.append(item)
|
||||||
|
tasks_to_treat.reverse()
|
||||||
|
|
||||||
|
for item in tasks_to_treat:
|
||||||
|
fields = item.split(',', 6)
|
||||||
if fields[3].strip('"') == "root":
|
if fields[3].strip('"') == "root":
|
||||||
result = fields[1].strip('"')
|
result = fields[1].strip('"')
|
||||||
taskID, user, _ = fields[2].strip('"').split(':')
|
taskID, user, _ = fields[2].strip('"').split(':')
|
||||||
|
@ -154,10 +162,7 @@ for item in task_list:
|
||||||
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))
|
||||||
sendMail(error_send_to, error_send_to, mail_content.encode("utf-8"))
|
sendMail(error_send_to, error_send_to, mail_content.encode("utf-8"))
|
||||||
|
# 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]
|
|
||||||
if last != new_last:
|
|
||||||
last_file = open(last_print_filename, "w")
|
last_file = open(last_print_filename, "w")
|
||||||
last_file.write(new_last)
|
last_file.write(fields[0])
|
||||||
last_file.close()
|
last_file.close()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue