#!/usr/bin/python # -*- coding: utf-8 -*- """Affiche des statistiques sur le câblage des prises des chambres (CRANS ou CROUS).""" import sys import psycopg2 sys.path.append('/usr/scripts/gestion') from affich_tools import tableau conn = psycopg2.connect("user=crans dbname=switchs host=pgsql.adm.crans.org") def compte_prises(reseau, batiment=''): """Compte les prises câblées sur reseau (crans ou crous).""" reseau = reseau.lower() cur = conn.cursor() if batiment == '': cur.execute("SELECT COUNT(prises) FROM prises WHERE " + reseau + "=True") n = cur.fetchone()[0] else: batiment = batiment.lower() if batiment == "g": cur.execute("SELECT COUNT(prises) FROM prises WHERE (batiment, " + reseau + ")=(%s, True) AND substring(chambre for 1) <> '0'", (batiment, )) else: cur.execute("SELECT COUNT(prises) FROM prises WHERE (batiment, " + reseau + ")=(%s, True)", (batiment, )) n = cur.fetchone()[0] return n tot_crans = 0 tot_crous = 0 data = [] for bat in ['A', 'B', 'C', 'G', 'H', 'I', 'J', 'M']: n_crans = compte_prises('crans', bat) n_crous = compte_prises('crous', bat) tot_crans += n_crans tot_crous += n_crous frac_crans = 1.*n_crans/(n_crous + n_crans) data.append([bat, n_crans, n_crous, '%0.2f' % (100*frac_crans)]) data.append(["Total", tot_crans, tot_crous, '%0.2f' % (100.*n_crans/(n_crous+n_crans))]) print tableau(data, [u'Bât.', u'CRANS', u'CROUS', u'% CRANS'], [7, 7, 7, 9], ['c', 'd', 'd', 'd'])