Resolution du problme : les lignes d'historique n'avaient pas toutes la

mme tte...

darcs-hash:20061216134726-f46e9-7f9ef3d06b998d6048e87ee475789a1b856d32df.gz
This commit is contained in:
gdetrez 2006-12-16 14:47:26 +01:00
parent 345e65bae7
commit aa7dc31615

View file

@ -16,6 +16,14 @@ from ldap_crans import crans_ldap
from time import *
from config import upload
import commands
# logging tools
import syslog
def log(x):
syslog.openlog('GENERATE_DECONNEXION_NOTICE')
syslog.syslog(x)
syslog.closelog()
import crans.utils.exceptions
import locale
locale.setlocale(locale.LC_TIME, 'fr_FR')
@ -29,54 +37,67 @@ Les sanctions disponibles sont :
usage: generate.py --sanction recherche_ldap
Le motif de recherche dans la base ldap doit donné un résultat unique""" % "\n\t--".join(map(lambda x: x,sanctions))
def generate_ps(sanction, proprio, db):
"""En fonction de la sanction à appliquer au propriétaire,
on génère la feuille de déconnexion et on retourne son nom et
emplacement."""
# Dossier de génération du ps
dossier = '/usr/scripts/surveillance/fiche_deconnexion'
try:
log('Generate deconnexion notice for %s' % proprio.Nom())
# Dossier de génération du ps
dossier = '/usr/scripts/surveillance/fiche_deconnexion'
# Base pour le nom du fichier
fichier = strftime('%Y-%m-%d-%H-%M') + '-%s-%s' % (sanction, proprio.Nom().\
lower().replace(' ', '-'))
# Création du fichier tex
format_date = '%A %d %B %Y'
template = file('%s/deconnexion_%s.tex' % (dossier, sanction)).read()
template = template.replace('~prenom~', proprio.prenom().encode('iso8859-15'))
template = template.replace('~nom~', proprio.nom().encode('iso8859-15'))
template = template.replace('~chambre~', proprio.chbre().encode('iso8859-15'))
template = template.replace('~mail~', proprio.email().encode('iso8859-15'))
template = template.replace('~debut~', strftime(format_date, localtime()))
template = template.replace('~fin~', strftime(format_date, localtime(time()+14*86400)))
# filtrage des autodisc
historique = [ bl.encode('iso-8859-15').split('$') for bl in proprio.blacklist() if bl.split('$')[2] == 'autodisc_%s' % sanction ]
# transfomation en tuple (date, sanction)
historique = [ (strftime('%A %d %B %Y', localtime(int(bl[0]))), bl[-1]) for bl in historique ]
# tranformation en ligne
if sanction == 'upload' :
# On donne la valeur de l'upload
historique = [ '%s & %s & Mo'%(bl[0], bl[1].split(' ')[-2]) for bl in historique ]
else :
# On donne juste la date
historique = [ '%s' % bl[0] for bl in historique ]
# assemblage des lignes
historique = r"""\\
""".join(historique)
template = template.replace('~historique~', historique)
if sanction == 'upload' :
template = template.replace('~limitehard~', str(upload.hard))
template = template.replace('~nbadher~', str(len(db.search('paiement=ok')['adherent'])))
# Base pour le nom du fichier
fichier = strftime('%Y-%m-%d-%H-%M') + '-%s-%s' % (sanction, proprio.Nom().\
lower().replace(' ', '-'))
# Création du fichier tex
format_date = '%A %d %B %Y'
template = file('%s/deconnexion_%s.tex' % (dossier, sanction)).read()
template = template.replace('~prenom~', proprio.prenom().encode('iso8859-15'))
template = template.replace('~nom~', proprio.nom().encode('iso8859-15'))
template = template.replace('~chambre~', proprio.chbre().encode('iso8859-15'))
template = template.replace('~mail~', proprio.email().encode('iso8859-15'))
template = template.replace('~debut~', strftime(format_date, localtime()))
template = template.replace('~fin~', strftime(format_date, localtime(time()+14*86400)))
# filtrage des autodisc
historique = [ bl.encode('iso-8859-15').split('$') for bl in proprio.blacklist() if bl.split('$')[2] == 'autodisc_%s' % sanction ]
# transfomation en tuple (date, sanction)
historique = [ (strftime('%A %d %B %Y', localtime(int(bl[0]))), bl[-1].split(' ')[-2]) for bl in historique ]
# tranformation en ligne
if sanction == 'upload' :
# On donne la valeur de l'upload
historique = [ '%s & %s & Mo'%(bl[0], bl[1]) for bl in historique ]
else :
# On donne juste la date
historique = [ '%s' % bl[0] for bl in historique ]
# assemblage des lignes
historique = r"""\\
""".join(historique)
template = template.replace('~historique~', historique)
if sanction == 'upload' :
template = template.replace('~limitehard~', str(upload.hard))
template = template.replace('~nbadher~', str(len(db.search('paiement=ok')['adherent'])))
file('%s/%s.tex' % (dossier, fichier), 'w').write(template)
# Compilation du fichier latex
commands.getstatusoutput('PATH="/bin:/usr/bin" cd %(dossier)s && latex %(base)s.tex && dvips %(base)s.dvi && rm -f %(base)s.dvi %(base)s.aux %(base)s.log %(base)s.tex'%{'dossier': dossier, 'base': fichier})
return '%s/%s.ps' % (dossier, fichier)
file('%s/%s.tex' % (dossier, fichier), 'w').write(template)
# Compilation du fichier latex
commands.getstatusoutput('PATH="/bin:/usr/bin" cd %(dossier)s && latex %(base)s.tex && dvips %(base)s.dvi && rm -f %(base)s.dvi %(base)s.aux %(base)s.log %(base)s.tex'%{'dossier': dossier, 'base': fichier})
return '%s/%s.ps' % (dossier, fichier)
except Exception, e:
log('Erreur lors de la génération du ps : ')
log(str(e))
log("Values : sanction:%s adherent:%s" % (sanction, proprio.Nom()))
log(crans.utils.exceptions.formatExc())
raise e
if __name__ == "__main__":
def log(x):
print x
def aide():
print help
sys.exit(0)
@ -99,7 +120,7 @@ if __name__ == "__main__":
print "Erreur : aucun motif de recherche défini.\n"
aide()
else :
motif = sys.argv[2]
motif = sys.argv[-1]
recherche = db.search(motif)['adherent']