From 014972c0124ca865d48342449dca90f22986677d Mon Sep 17 00:00:00 2001 From: Benjamin Bohard Date: Thu, 21 Aug 2025 09:34:49 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20d=E2=80=99un=20script=20=C3=A0=20tester?= =?UTF-8?q?=20pour=20la=20purge=20des=20comptes=20non=20affect=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- purge_unaffected_enseignants.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 purge_unaffected_enseignants.py diff --git a/purge_unaffected_enseignants.py b/purge_unaffected_enseignants.py new file mode 100644 index 0000000..9ee5728 --- /dev/null +++ b/purge_unaffected_enseignants.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +#-*- coding: utf-8 -*- + +from scribe.eoleldap import Ldap +from scribe.enseignant import Enseignant + +connection = Ldap() +connection.connect() + + +def get_unaffected_enseignants(): + members = set([user + for etab in connection._search("(&(objectClass=eolegroupe)(type=etablissement))", ['memberUid']) + for user in etab[1].get('memberUid', [])]) + users = set([user[1]['uid'][0] + for user in connection._search("(objectClass=administrateur)", ['uid'])]) + unaffected_users = users.difference(members) + return unaffected_users + +if __name__ == "__main__": + + from argparse import ArgumentParser + parser = ArgumentParser(description="Purge des comptes enseignants non affectés") + parser.add_argument("-s", "--save", action="store_true", help="Archiver les données personnelles") + + args = parser.parse_args() + + remove_data = not args.save + + enseignant = Enseignant() + + for unaffected_enseignant in get_unaffected_enseignants(): + enseignant._delete(unaffected_enseignant, remove_data=remove_data)