On n'affiche qu'une date pour les dconnexions de p2p
On peut utiliser generate.py pour gnrer une feuille de dconnexion darcs-hash:20060424161313-72cb0-c44dab62432502d108295f855d07e3cd530c3770.gz
This commit is contained in:
parent
a79fd2d23c
commit
0a3fe1b494
2 changed files with 115 additions and 1 deletions
|
@ -118,7 +118,7 @@ utiliser une autre adresse mail, adresse-toi
|
||||||
changement.} accompagnés à chaque fois d'une déconnexion de 24h.
|
changement.} accompagnés à chaque fois d'une déconnexion de 24h.
|
||||||
Voici l'historique de tes déconnexions :
|
Voici l'historique de tes déconnexions :
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{tabular}[c]{p{5cm}ll}
|
\begin{tabular}[c]{p{5cm}}
|
||||||
\historique
|
\historique
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
\end{center}
|
\end{center}
|
||||||
|
|
114
surveillance/fiche_deconnection/generate.py
Executable file
114
surveillance/fiche_deconnection/generate.py
Executable file
|
@ -0,0 +1,114 @@
|
||||||
|
#! /usr/bin/env python
|
||||||
|
# -*- coding: iso-8859-15 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
Script de génération de feuille de déconnexion pour :
|
||||||
|
- upload
|
||||||
|
- p2p
|
||||||
|
|
||||||
|
Copyright (C) Nicolas Salles
|
||||||
|
Licence : GPL v2
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
sys.path.append('/usr/scripts/gestion')
|
||||||
|
from ldap_crans import crans_ldap
|
||||||
|
from time import *
|
||||||
|
from config import upload
|
||||||
|
import commands
|
||||||
|
|
||||||
|
import locale
|
||||||
|
locale.setlocale(locale.LC_TIME, 'fr_FR')
|
||||||
|
|
||||||
|
|
||||||
|
sanctions = ['upload', 'p2p']
|
||||||
|
|
||||||
|
help = """Script de génération d'une feuille de déconnexion.
|
||||||
|
Les sanctions disponibles sont :
|
||||||
|
\t--%s
|
||||||
|
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'
|
||||||
|
|
||||||
|
# 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)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
db = crans_ldap()
|
||||||
|
|
||||||
|
sanction = ''
|
||||||
|
for s in sanctions :
|
||||||
|
if '--%s' % s in sys.argv:
|
||||||
|
sanction = s
|
||||||
|
|
||||||
|
if not sanction :
|
||||||
|
print "Erreur : aucune sanction définie.\n"
|
||||||
|
print help
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
if len(sys.argv) <= 2 :
|
||||||
|
print "Erreur : aucun motif de recherche défini.\n"
|
||||||
|
print help
|
||||||
|
sys.exit(0)
|
||||||
|
else :
|
||||||
|
motif = sys.argv[2]
|
||||||
|
|
||||||
|
recherche = db.search(motif)['adherent']
|
||||||
|
|
||||||
|
if len(recherche) == 0:
|
||||||
|
print "Erreur : aucun résultat pour %s.\n" % motif
|
||||||
|
print help
|
||||||
|
sys.exit(0)
|
||||||
|
elif len(recherche) != 1:
|
||||||
|
print "Erreur : plusieurs résultats pour %s.\n" % motif
|
||||||
|
print help
|
||||||
|
sys.exit(0)
|
||||||
|
else :
|
||||||
|
adherent = recherche[0]
|
||||||
|
|
||||||
|
# On génére alors le postscript
|
||||||
|
fichier = generate_ps(sanction, adherent, db)
|
||||||
|
print u'Le fichier %s a été généré.' % fichier
|
Loading…
Add table
Add a link
Reference in a new issue