
* Fonctions plus bloc main * On n'utilise pas .rights(), car elle surcharge la liste des droits * Améliore un peu le code
51 lines
1.4 KiB
Python
Executable file
51 lines
1.4 KiB
Python
Executable file
#!/bin/bash /usr/scripts/python.sh
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# list_droits.py --- Récupère la liste des adhérents ayant actuellement
|
|
# des droits.
|
|
"""Récupère la liste des adhérents avec des droits et l'affiche
|
|
triée par type de droit."""
|
|
|
|
from lc_ldap import shortcuts
|
|
from config.encoding import out_encoding
|
|
|
|
def fetch_adhs(ldap):
|
|
"""Récupère la liste des adhérents avec des droits et
|
|
les trie par droits actuellement possédés"""
|
|
adhs_avec_droits = ldap.search(u"droits=*")
|
|
|
|
adhs_par_droit = {}
|
|
|
|
for adh in adhs_avec_droits:
|
|
for droit in adh['droits']:
|
|
adhs_par_droit.setdefault(droit, []).append(adh)
|
|
|
|
return adhs_par_droit
|
|
|
|
def make_output(adhs_par_droit):
|
|
"""Génère une sortie à partir de la liste d'adhérents
|
|
triés par droits"""
|
|
d = adhs_par_droit.keys()
|
|
d.sort()
|
|
|
|
output = []
|
|
|
|
for droit in d:
|
|
adhs = adhs_par_droit[droit]
|
|
|
|
noms = []
|
|
|
|
txt = '%s\n' % droit
|
|
for adh in adhs :
|
|
noms.append(u'%s %s' % (adh['prenom'][0], adh['nom'][0]))
|
|
noms.sort()
|
|
txt += u' %s' % '\n '.join(noms)
|
|
|
|
output.append(txt)
|
|
return output
|
|
|
|
if __name__ == '__main__':
|
|
LDAP = shortcuts.lc_ldap_readonly()
|
|
OUTPUT = make_output(fetch_adhs(LDAP))
|
|
|
|
print u'\n- - - - - - = = = = = = # # # # # # # # = = = = = = - - - - - -\n'.join(OUTPUT).encode(out_encoding)
|