--- /dev/null
+#!/usr/bin/python
+# -*- coding:utf8 -*-
+
+""" Script pour afficher qui a quels droits.
+
+ Affiche les prénom, nom, pseudo, droits, surdroits des gens qui ont des droits!=par défaut.
+ droits et surdroits sont pretty-printés pour qu'on les comprenne.
+"""
+
+from pyPgSQL import PgSQL
+
+con=PgSQL.connect(database="bde")
+cur=con.cursor()
+
+cur.execute("SELECT prenom,nom,pseudo,droits,surdroits,supreme FROM adherents WHERE numcbde>-1"
+ +" AND NOT droits in (0,1) AND supreme='f' ORDER BY droits;")
+l=cur.fetchall()
+
+#: Correspondance binaire → droit
+dicodroits={
+ 1 : "Intranet",
+ 2 : "Note",
+ 4 : "Consos",
+ 8 : "Adhérents",
+ 16 : "Boutons",
+ 32 : "Inscriptions",
+ 64 : "Activités",
+ 128 : "Invités",
+ 256 : "Transactions",
+ 512 : "Forcé",
+ 1024 : "Chèques",
+ 2048 : "Webmaster",
+ 4096 : "Wei",
+ 8192 : "Sendmail",
+ 16384 : "Bureau",
+ 32768 : "Accès extérieur",
+ 65536 : "Préinscriptions"
+ }
+
+pow2=[2**i for i in range(17)]
+vrail=[]
+for ligne in l:
+ vrail.append([ligne["prenom"],ligne["nom"],ligne["pseudo"],
+ ",".join([dicodroits[i] for i in pow2 if ligne["droits"]&i]),
+ ",".join([dicodroits[i] for i in pow2 if ligne["surdroits"]&i])])
+
+
+lenprenom = max([len(unicode(ligne[0])) for ligne in vrail]+[len(u"prénom")])
+lennom = max([len(unicode(ligne[1])) for ligne in vrail]+[len(u"nom")])
+lenpseudo = max([len(unicode(ligne[2])) for ligne in vrail]+[len(u"pseudo")])
+lendroits = max([len(unicode(ligne[3])) for ligne in vrail]+[len(u"droits")])
+lensurdroits = max([len(unicode(ligne[4])) for ligne in vrail]+[len(u"surdroits")])
+
+template=" %%-%ds | %%-%ds | %%-%ds | %%-%ds | %%-%ds \n"%(lenprenom,lennom,lenpseudo,lendroits,lensurdroits)
+
+pretty=template%("prénom","nom","pseudo","droits","surdroits")
+pretty+="-"*(lenprenom+2)+"+"+"-"*(lennom+2)+"+"+"-"*(lenpseudo+2)+"+"+"-"*(lendroits+2)+"+"+"-"*(lensurdroits+2)+"\n"
+for i in vrail:
+ pretty+=template%(tuple([unicode(j) for j in i]))
+
+print pretty