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. la liste des dernières tâches imprimées.
Ce script est lancé par un cron toutes les dix minutes sur zamok. Pour éviter 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 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 BeautifulSoup
import sys import sys
@ -13,9 +16,7 @@ import requests
import re import re
import datetime import datetime
import time import time
import smtplib
from gestion.affich_tools import cprint
from gestion import mail from gestion import mail
from utils.sendmail import actually_sendmail from utils.sendmail import actually_sendmail
from lc_ldap import shortcuts from lc_ldap import shortcuts
@ -60,7 +61,6 @@ fin = now.replace(second=0, minute=(now.minute/10)*10, microsecond=0)
debut = fin - datetime.timedelta(minutes=10) debut = fin - datetime.timedelta(minutes=10)
success=dict() success=dict()
clubs=dict()
echecs=dict() echecs=dict()
for job in jobs: for job in jobs:
# Fin de parsing # Fin de parsing
@ -101,19 +101,10 @@ for job in jobs:
nb = split[0] nb = split[0]
name = split[1] name = split[1]
task = u':'.join(split[2:]) 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: if name not in success:
success[name] = {'task': []} success[name] = {'task': []}
success[name]['task'].append(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' From = 'impression@crans.org'
e = 0 e = 0
a = 0 a = 0
@ -124,7 +115,11 @@ for name in success:
a = a + 1 a = a + 1
adh = ad[0] adh = ad[0]
To = name + u'@crans.org' To = name + u'@crans.org'
try:
tname = unicode(adh['prenom'][0]) + " " + unicode(adh['nom'][0]) 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)] codes = [x[0] + u'#' for x in digicode.list_code(name)]
if not codes: if not codes:
codes = [digicode.gen_code(name) + u'#'] codes = [digicode.gen_code(name) + u'#']
@ -137,36 +132,21 @@ for name in success:
'taches': u', '.join(success[name]['task']), 'taches': u', '.join(success[name]['task']),
'codes': u', '.join(codes) 'codes': u', '.join(codes)
}) })
#print mailtxt.as_string() if VERB:
print mailtxt.as_string()
actually_sendmail(From, (To,), mailtxt) actually_sendmail(From, (To,), mailtxt)
else: else:
e = e+1 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: for name in echecs:
ad = con.search(u'(uid=%s)' % name) ad = con.search(u'(uid=%s)' % name)
To = 'impression@lists.crans.org' To = 'impression@lists.crans.org'
if ad <> []: if ad <> []:
adh = ad[0] adh = ad[0]
try:
tname = unicode(adh['prenom'][0]) + " " + unicode(adh['nom'][0]) tname = unicode(adh['prenom'][0]) + " " + unicode(adh['nom'][0])
except KeyError:
tname = unicode(name)
else: else:
tname = name tname = name
mailtxt=mail.generate('mail_impression_ratee', { mailtxt=mail.generate('mail_impression_ratee', {
@ -175,7 +155,8 @@ for name in echecs:
'tname': tname, 'tname': tname,
'taches': u', '.join(echecs[name]['task']), 'taches': u', '.join(echecs[name]['task']),
}) })
#print mailtxt.as_string() if VERB:
print mailtxt.as_string()
actually_sendmail(From, (To,), mailtxt) actually_sendmail(From, (To,), mailtxt)
@ -186,4 +167,3 @@ if e>0:
print a print a
print "Nombre de mails non envoyés faute de résultats LDAP :" print "Nombre de mails non envoyés faute de résultats LDAP :"
print e print e
#print len(success)