Gestion des clubs avec la nouvelle app d'impression

This commit is contained in:
Gabriel Detraz 2015-09-05 23:02:04 +02:00
parent d57588e313
commit e2eb01f2aa

View file

@ -5,7 +5,10 @@ adhérent. Le script se connecte à l'interface d'impression pour récupérer
la liste des dernières tâches imprimées.
Ce script est lancé par un cron toutes les dix minutes sur zamok. Pour éviter
de notifier plusieurs fois de la même fin d'impression, on ne balaie dans
la liste que le dernier intervalle (bornes entières) de dix minutes"""
la liste que le dernier intervalle (bornes entières) de dix minutes
detraz@crans.org
"""
import BeautifulSoup
import sys
@ -13,9 +16,7 @@ import requests
import re
import datetime
import time
import smtplib
from gestion.affich_tools import cprint
from gestion import mail
from utils.sendmail import actually_sendmail
from lc_ldap import shortcuts
@ -32,13 +33,13 @@ try:
req = requests.get(URL_JOBLIST, verify=CA)
except requests.exceptions.ConnectionError:
print '''L'imprimante est injoignable. Une intervention manuelle peut être nécessaire
--
--
Le script de notification d'impressions'''
exit(1)
if req.status_code!=200:
print '''L'imprimante est injoignable. Une intervention manuelle peut être nécessaire
--
--
Le script de notification d'impressions'''
exit(1)
@ -60,7 +61,6 @@ fin = now.replace(second=0, minute=(now.minute/10)*10, microsecond=0)
debut = fin - datetime.timedelta(minutes=10)
success=dict()
clubs=dict()
echecs=dict()
for job in jobs:
# Fin de parsing
@ -101,19 +101,10 @@ for job in jobs:
nb = split[0]
name = split[1]
task = u':'.join(split[2:])
if u'@' in name:
#Seuls les clubs ont un @ dans leur alias, donc boucle
# dédiée au clubs
[name, club] = name.split(u'@', 1)
if club not in clubs:
clubs[club] = {'task': []}
clubs[club]['task'].append(task)
if name not in success:
success[name] = {'task': []}
success[name]['task'].append(task)
#Section consacrée à l'envoi : partie 1 pour les adh, partie 2 pour les clubs
#To = 'detraz@crans.org'
From = 'impression@crans.org'
e = 0
a = 0
@ -124,7 +115,11 @@ for name in success:
a = a + 1
adh = ad[0]
To = name + u'@crans.org'
tname = unicode(adh['prenom'][0]) + " " + unicode(adh['nom'][0])
try:
tname = unicode(adh['prenom'][0]) + " " + unicode(adh['nom'][0])
# Pour les clubs
except KeyError:
tname = unicode(name)
codes = [x[0] + u'#' for x in digicode.list_code(name)]
if not codes:
codes = [digicode.gen_code(name) + u'#']
@ -137,36 +132,21 @@ for name in success:
'taches': u', '.join(success[name]['task']),
'codes': u', '.join(codes)
})
#print mailtxt.as_string()
if VERB:
print mailtxt.as_string()
actually_sendmail(From, (To,), mailtxt)
else:
e = e+1
for club in clubs:
a = a + 1
tname = club
To = club + u'@crans.org'
codes = [x[0] + u'#' for x in digicode.list_code(club)]
if not codes:
codes = [digicode.gen_code(club) + u'#']
if VERB:
print (u"Envoi du mail à %s" % To)
mailtxt=mail.generate('mail_impression_ok', {
'To': To,
'From': From,
'tname': tname,
'taches': u', '.join(clubs[club]['task']),
'codes': u', '.join(codes),
})
#print mailtxt.as_string()
actually_sendmail(From, (To,), mailtxt)
for name in echecs:
ad = con.search(u'(uid=%s)' % name)
To = 'impression@lists.crans.org'
if ad <> []:
adh = ad[0]
tname = unicode(adh['prenom'][0]) + " " + unicode(adh['nom'][0])
try:
tname = unicode(adh['prenom'][0]) + " " + unicode(adh['nom'][0])
except KeyError:
tname = unicode(name)
else:
tname = name
mailtxt=mail.generate('mail_impression_ratee', {
@ -175,7 +155,8 @@ for name in echecs:
'tname': tname,
'taches': u', '.join(echecs[name]['task']),
})
#print mailtxt.as_string()
if VERB:
print mailtxt.as_string()
actually_sendmail(From, (To,), mailtxt)
@ -186,4 +167,3 @@ if e>0:
print a
print "Nombre de mails non envoyés faute de résultats LDAP :"
print e
#print len(success)