From 2f1bfb6e5d950d877514e5c500e5f832b805648a Mon Sep 17 00:00:00 2001 From: Benjamin Bohard Date: Mon, 25 Aug 2025 09:30:53 +0200 Subject: [PATCH] =?UTF-8?q?Chercher=20les=20individus=20pour=20=C3=A9value?= =?UTF-8?q?r=20le=20fonctionnement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- find_individus.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/find_individus.py b/find_individus.py index 32cb72d..8adc01c 100644 --- a/find_individus.py +++ b/find_individus.py @@ -74,13 +74,24 @@ if __name__ == '__main__': connexion.connect() user = Enseignant() user.ldap_admin = connexion - candidates = {user.get_attr(candidate, 'intid')[0]: [etab] - for etab in etabs - for candidate in connexion._search('(&(objectclass=eolegroupe)(type=etablissement)(cn={etab}))'.format(etab=etab), - ['memberUid'])[0][1]['memberUid'] - if user._is_enseignant(candidate)} - result = ["{}\t{}".format(e[0]['nom'], " ".join(sorted(set(e)) + candidates[candidate])) for candidate in candidates for e in repartition[candidate] if len(set(e)) > 1] - + members = [] + for etab in etabs: + etab_group = connexion._search('(&(objectclass=eolegroupe)(type=etablissement)(cn={etab}))'.format(etab=etab), + ['memberUid']) + if etab_group: + enseignants = [enseignant + for enseignant in etab_group[0][1].get('memberUid', []) + if user._is_enseignant(enseignant)] + members.extend(enseignants) + members = sorted(list(set(members))) + result = [] + for member, ind in [(member, user.get_attr(member, 'intid')) for member in members]: + user_etabs = set(repartition.get(ind[0], []) + user.get_etab(member, multi_etabs=True)) + if len(user_etabs) > 1: + partial_result = (member, ind[0], *sorted(user_etabs)) + result.append(partial_result) + result.sort(key=lambda x: x[2:]) + result = [f"{el[0]}\t\t{el[1]}\t{' '.join(el[2:])}" for el in result] else: result = [] print("\n".join(sorted(result)))