diff --git a/utils/list_droits.py b/utils/list_droits.py index dd955d21..01a750f4 100755 --- a/utils/list_droits.py +++ b/utils/list_droits.py @@ -1,32 +1,51 @@ #!/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 -ldap = shortcuts.lc_ldap_readonly() +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=*") -txts = [] + adhs_par_droit = {} -adhs = ldap.search(u"droits=*") -droits={} -for adh in adhs: - for droit in adh.rights(): - droits[droit] = droits.get(droit, []) + [adh] + for adh in adhs_avec_droits: + for droit in adh['droits']: + adhs_par_droit.setdefault(droit, []).append(adh) -d=droits.keys() -d.sort() + return adhs_par_droit -for droit in d: - adhs = droits[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() - noms = [] + output = [] - txt = '%s\n' % droit - for adh in adhs : - noms.append(u'%s %s (%s)' % (adh['prenom'][0],adh['nom'][0],adh['historique'][0].split()[0].split('/',2)[-1])) - noms.sort() - txt += u' %s' % '\n '.join(noms) + for droit in d: + adhs = adhs_par_droit[droit] - txts.append(txt) + noms = [] -print '\n- - - - - - = = = = = = # # # # # # # # = = = = = = - - - - - -\n'.join(txts) + 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)