]> gitweb.pimeys.fr Git - scripts-20-100.git/blob - bde/old/voir_droits.py
[bde] Gros ménage : archivage de tous les scripts NK2012
[scripts-20-100.git] / bde / old / voir_droits.py
1 #!/usr/bin/python
2 # -*- coding:utf8 -*-
3
4 """ Script pour afficher qui a quels droits.
5
6 Affiche les prénom, nom, pseudo, droits, surdroits des gens qui ont des droits!=par défaut.
7 droits et surdroits sont pretty-printés pour qu'on les comprenne.
8 """
9
10 from pyPgSQL import PgSQL
11
12 con=PgSQL.connect(database="bde")
13 cur=con.cursor()
14
15 cur.execute("SELECT prenom,nom,pseudo,droits,surdroits,supreme FROM adherents WHERE numcbde>-1"
16 +" AND NOT droits in (0,1) AND supreme='f' ORDER BY droits;")
17 l=cur.fetchall()
18
19 #: Correspondance binaire → droit
20 dicodroits={
21 1 : "Intranet",
22 2 : "Note",
23 4 : "Consos",
24 8 : "Adhérents",
25 16 : "Boutons",
26 32 : "Inscriptions",
27 64 : "Activités",
28 128 : "Invités",
29 256 : "Transactions",
30 512 : "Forcé",
31 1024 : "Chèques",
32 2048 : "Webmaster",
33 4096 : "Wei",
34 8192 : "Sendmail",
35 16384 : "Bureau",
36 32768 : "Accès extérieur",
37 65536 : "Préinscriptions"
38 }
39
40 pow2=[2**i for i in range(17)]
41 vrail=[]
42 for ligne in l:
43 vrail.append([ligne["prenom"],ligne["nom"],ligne["pseudo"],
44 ",".join([dicodroits[i] for i in pow2 if ligne["droits"]&i]),
45 ",".join([dicodroits[i] for i in pow2 if ligne["surdroits"]&i])])
46
47
48 lenprenom = max([len(unicode(ligne[0])) for ligne in vrail]+[len(u"prénom")])
49 lennom = max([len(unicode(ligne[1])) for ligne in vrail]+[len(u"nom")])
50 lenpseudo = max([len(unicode(ligne[2])) for ligne in vrail]+[len(u"pseudo")])
51 lendroits = max([len(unicode(ligne[3])) for ligne in vrail]+[len(u"droits")])
52 lensurdroits = max([len(unicode(ligne[4])) for ligne in vrail]+[len(u"surdroits")])
53
54 template=" %%-%ds | %%-%ds | %%-%ds | %%-%ds | %%-%ds \n"%(lenprenom,lennom,lenpseudo,lendroits,lensurdroits)
55
56 pretty=template%("prénom","nom","pseudo","droits","surdroits")
57 pretty+="-"*(lenprenom+2)+"+"+"-"*(lennom+2)+"+"+"-"*(lenpseudo+2)+"+"+"-"*(lendroits+2)+"+"+"-"*(lensurdroits+2)+"\n"
58 for i in vrail:
59 pretty+=template%(tuple([unicode(j) for j in i]))
60
61 print pretty