L'ancien stats_cableurs va aux archives, on utilise celui de /utils à présent
This commit is contained in:
parent
fb5f0888de
commit
96676dee69
1 changed files with 0 additions and 0 deletions
|
@ -1,64 +0,0 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
# Stats sur les historiques
|
||||
|
||||
import sys
|
||||
sys.path.append("/usr/scripts/gestion")
|
||||
|
||||
import types
|
||||
from ldap_crans import crans_ldap
|
||||
from pysqlite2 import dbapi2 as sqlite
|
||||
import re
|
||||
from time import mktime, strptime
|
||||
|
||||
def plat(chose):
|
||||
"""Applatit une liste de liste. Hautement récursif."""
|
||||
if type(chose) != types.ListType:
|
||||
return [chose]
|
||||
return sum(map(lambda x: plat(x), chose), [])
|
||||
|
||||
|
||||
def hist():
|
||||
"""Récupère l'historique dans une base SQLite dont la connexion est returnée."""
|
||||
# On récupèr les adhérents
|
||||
adherents = crans_ldap().search("nom=*")['adherent']
|
||||
# Et les historiques rattachés à eux et à leurs machines
|
||||
historiques = map(lambda x: [x.historique(), map(lambda y: y.historique(), x.machines())],
|
||||
adherents)
|
||||
historiques = plat(historiques)
|
||||
# On va maintenant coller les historiques dans une structure plus
|
||||
# sympa, style une base SQL que l'on garde en mémoire
|
||||
con = sqlite.connect("historiques")
|
||||
cur = con.cursor()
|
||||
cur.execute("CREATE TABLE historique (date INTEGER, nom TEXT, action TEXT)")
|
||||
# On doit maintenant mettre ce qu'il faut dans la table...
|
||||
regex = re.compile("([^,]*), ([^ ]*) : (.*)")
|
||||
for h in historiques:
|
||||
mo = regex.match(h)
|
||||
if not mo:
|
||||
print "Hummm ? Ligne bizarre : %s" % h
|
||||
else:
|
||||
date = int(mktime(strptime(mo.group(1), "%d/%m/%Y %H:%M")))
|
||||
utilisateur = mo.group(2)
|
||||
# Il peut y avoir plusieurs raisons !
|
||||
raisons = mo.group(3).split(", ")
|
||||
# On garde les raisons courtes
|
||||
raisons = map(lambda x: x.split(" ")[0].strip(), raisons)
|
||||
for r in raisons:
|
||||
cur.execute("INSERT INTO historique VALUES (?, ?, ?)",
|
||||
(date, utilisateur, r))
|
||||
con.commit()
|
||||
|
||||
|
||||
return con
|
||||
|
||||
hist()
|
||||
|
||||
# Exemple de requete :
|
||||
|
||||
# select nom, count(nom) as combien from historique
|
||||
# where date>1093950403 group by nom order by combien ;
|
||||
|
||||
# select action,count(action) from historique where nom='bernat' and
|
||||
# date>1093950403 group by action order by count(action);
|
Loading…
Add table
Add a link
Reference in a new issue