[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()
|
||||
|
||||
# On récupère la liste des tâches et on enlève les entêtes.
|
||||
# Pour faire la requête, on doit récupérer un cookie de session.
|
||||
# On récupère la liste des tâches. 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())
|
||||
_, 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')
|
||||
# On enlève les entêtes et les deux lignes vides à la fin de la liste.
|
||||
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é.
|
||||
# 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()
|
||||
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:
|
||||
fields = item.split(',', 6)
|
||||
# On notera la présence d'une tâche complètement vide à la fin de la liste.
|
||||
if fields[0] == last or fields[0] == '':
|
||||
if item.split(',', 1)[0] == last:
|
||||
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":
|
||||
result = fields[1].strip('"')
|
||||
taskID, user, _ = fields[2].strip('"').split(':')
|
||||
|
@ -154,10 +162,7 @@ for item in task_list:
|
|||
else:
|
||||
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"))
|
||||
|
||||
# É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:
|
||||
# On met à jour le numéro de la dernière tâche traitée.
|
||||
last_file = open(last_print_filename, "w")
|
||||
last_file.write(new_last)
|
||||
last_file.write(fields[0])
|
||||
last_file.close()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue