Première version
This commit is contained in:
67
find_individus.py
Normal file
67
find_individus.py
Normal file
@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import xml.etree.ElementTree as ET
|
||||
from pathlib import Path
|
||||
from scribe.eoleldap import get_etabs
|
||||
|
||||
current_etabs = get_etabs()[1]
|
||||
|
||||
root = Path('/home/adhomes/admin/perso/comptes')
|
||||
repartition = {}
|
||||
etabs = []
|
||||
individus = {}
|
||||
for xml in root.glob('**/sts_emp*.xml'):
|
||||
tree = ET.parse(xml)
|
||||
tree_root = tree.getroot()
|
||||
etab = tree_root.find('./PARAMETRES/UAJ').get('CODE')
|
||||
etabs.append(etab)
|
||||
for individu in tree_root.iter('INDIVIDU'):
|
||||
id_ind = individu.get('ID')
|
||||
nom_ind = individu.find('NOM_USAGE')
|
||||
try:
|
||||
nom_ind = nom_ind.text
|
||||
except:
|
||||
pass
|
||||
prenom_ind = individu.find('PRENOM')
|
||||
try:
|
||||
prenom_ind = prenom_ind.text
|
||||
except:
|
||||
pass
|
||||
fonction_ind = individu.find('FONCTION')
|
||||
try:
|
||||
fonction_ind = fonction_ind.text
|
||||
except:
|
||||
pass
|
||||
key = id_ind
|
||||
repartition.setdefault(key, [])
|
||||
repartition[key].append(etab)
|
||||
individus.setdefault(key, [])
|
||||
individus[key].append({'nom': nom_ind, 'prenom': prenom_ind, 'fonction': fonction_ind})
|
||||
|
||||
etabs = list(set(etabs))
|
||||
|
||||
if __name__ == '__main__':
|
||||
from argparse import ArgumentParser
|
||||
parser = ArgumentParser()
|
||||
parser.add_argument('-t', '--type')
|
||||
parser.add_argument('-e', '--extended', action='store_true')
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.type == 'individus':
|
||||
if args.extended:
|
||||
result = ["{}\t{}".format(individus[ind][0]['nom'], " ".join(sorted(set(e)))) for ind, e in repartition.items() if len(set(e)) > 1]
|
||||
else:
|
||||
result = [individus[ind][0]['nom'] for ind, e in repartition.items() if len(set(e)) > 1]
|
||||
elif args.type == 'presents':
|
||||
if args.extended:
|
||||
result = ["{} {}\t\t{}".format(individus[ind][0]['nom'], individus[ind][0]['prenom'], " ".join(set(e))) for ind, e in repartition.items() if len(set(e).intersection(set(current_etabs))) > 1]
|
||||
else:
|
||||
result = [individus[ind][0]['nom'] for ind, e in repartition.items() if len(set(e).intersection(set(current_etabs))) > 1]
|
||||
elif args.type == 'current_etabs':
|
||||
result = current_etabs
|
||||
elif args.type == 'etabs':
|
||||
result = etabs
|
||||
else:
|
||||
result = []
|
||||
print("\n".join(sorted(result)))
|
||||
|
Reference in New Issue
Block a user