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)