From 1d03b52711839476c4e211919bd422614720bcef Mon Sep 17 00:00:00 2001 From: Benjamin Bohard Date: Mon, 18 Aug 2025 09:39:27 +0200 Subject: [PATCH] Test de comparaison des logins --- patches.d/scribe-backend.patch | 75 ++++++++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 9 deletions(-) diff --git a/patches.d/scribe-backend.patch b/patches.d/scribe-backend.patch index 53706f4..6bff611 100644 --- a/patches.d/scribe-backend.patch +++ b/patches.d/scribe-backend.patch @@ -1,5 +1,43 @@ +diff --git usr/lib/python3/dist-packages/bin/importation_scribe usr/lib/python3/dist-packages/bin/importation_scribe +index 0db4982..76453df 100755 +--- usr/lib/python3/dist-packages/bin/importation_scribe ++++ usr/lib/python3/dist-packages/bin/importation_scribe +@@ -49,7 +49,7 @@ from os.path import isfile, dirname + from pyeole.process import system_out, system_code + from scribe.storage import init_store + from scribe.eoleldap import Ldap +-from scribe.ldapconf import SUPPORT_ETAB ++from scribe.ldapconf import SUPPORT_ETAB, BRANCHE_ETAB, PROF_FILTER + from scribe.eoletools import nscd_start, nscd_stop + from scribe.parsing import sconet, aaf, be1d, scribecsv2 + from scribe.importation import preferences, writer, config +@@ -465,6 +465,9 @@ class Console: + prefs = preferences.get_enseignants_prefs() + etab = prefs.get_default('etab') + etab_prefix = prefs.get_default('etab_prefix') ++ branche_etab = BRANCHE_ETAB % etab ++ purge_option = 'keep' ++ old_logins = connexion._search(PROF_FILTER, 'uid', suffix=branche_etab) + else: + etab = None + etab_prefix = '' +@@ -476,8 +479,13 @@ class Console: + etab=etab, etab_prefix=etab_prefix) + writer.verify_option(store=self.store, connexion=connexion, + etab_prefix=etab_prefix) +- writer.write_enseignant(store=self.store, connexion=connexion, ++ logins = writer.write_enseignant(store=self.store, connexion=connexion, + etab=etab) ++ if SUPPORT_ETAB: ++ print(logins) ++ print(old_logins) ++ print(set(old_logins).difference(set(logins))) ++ + if self.data_type in ['sconet', 'aaf']: + writer.write_service(store=self.store, connexion=connexion, + etab=etab, etab_prefix=etab_prefix) diff --git usr/lib/python3/dist-packages/scribe/importation/writer.py usr/lib/python3/dist-packages/scribe/importation/writer.py -index 34ce0fb..1f7ea1a 100644 +index 34ce0fb..40865d5 100644 --- usr/lib/python3/dist-packages/scribe/importation/writer.py +++ usr/lib/python3/dist-packages/scribe/importation/writer.py @@ -841,9 +841,6 @@ def _maj_enseignant(enseignant, user, login, etab, administratif=False): @@ -12,7 +50,15 @@ index 34ce0fb..1f7ea1a 100644 for joint in enseignant.get_classes(): groups.append('profs-%s' % str(joint.classe.nom)) if joint.profprincipal: -@@ -900,10 +897,10 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL +@@ -881,6 +878,7 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL + insertion des enseignants + """ + num = 0 ++ logins = [] + log.infolog("Intégration des enseignants...", title=True) + log.write_header(config.ENS_HEADER, config.ENS_INFO) + user = LdapEnseignant() +@@ -900,10 +898,10 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL else: login = '' else: @@ -25,7 +71,15 @@ index 34ce0fb..1f7ea1a 100644 else: # nouvel enseignant if str(enseignant.nom) == '' or str(enseignant.prenom) == '': -@@ -923,6 +920,9 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL +@@ -916,6 +914,7 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL + continue + # enregistrement du login attribué + enseignant.login = str(login) ++ logins.append(enseignant.login) + num += 1 + if num % config.DEBUG_NUM == 0: + log.debuglog("%d enseignants traités..." % num) +@@ -923,8 +922,12 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL _sync_passwords(user, new_passwords, change_pwd=change_pwd) _create_dirs(user, quota, new_passwords) log.infolog("TOTAL : %d enseignants" % num) @@ -34,8 +88,11 @@ index 34ce0fb..1f7ea1a 100644 + #user.ldap_admin._search(PROF_FILTER, attrlist=['uid'], suffix=branche_etab % {'etab': etab}) if num != 0: log.copy_info(config.ENS_INFO, user=current_ead_user) ++ return logins -@@ -1027,7 +1027,7 @@ def write_administratif(store, connexion, etab=None, current_ead_user=config.DEF + + # -------------------- administratifs -------------------- # +@@ -1027,7 +1030,7 @@ def write_administratif(store, connexion, etab=None, current_ead_user=config.DEF # personnel existe _maj_administratif(administratif, user, login) else: @@ -45,19 +102,19 @@ index 34ce0fb..1f7ea1a 100644 # le personnel a été crée comme un professeur... log.infolog("(%s a un compte enseignant)" % login) diff --git usr/lib/python3/dist-packages/scribe/linker.py usr/lib/python3/dist-packages/scribe/linker.py -index 71fb28d..44afa7a 100644 +index 4cc6082..94099e9 100644 --- usr/lib/python3/dist-packages/scribe/linker.py +++ usr/lib/python3/dist-packages/scribe/linker.py @@ -10,7 +10,7 @@ et l'annuaire ldap """ from scribe.ldapconf import ELEVE_FILTER, PROF_FILTER, ADMINISTRATIF_FILTER, \ --RESPONSABLE_FILTER, USER_FILTER, AUTRE_FILTER -+RESPONSABLE_FILTER, USER_FILTER, AUTRE_FILTER, BRANCHE_ETAB +-RESPONSABLE_FILTER, USER_FILTER, AUTRE_FILTER, LDAP_MODE ++RESPONSABLE_FILTER, USER_FILTER, AUTRE_FILTER, LDAP_MODE, BRANCHE_ETAB from scribe.eoletools import deformate_date, strip_adresse from scribe.eoleldap import Ldap -@@ -99,7 +99,7 @@ def _responsable_exists(responsable, user): +@@ -103,7 +103,7 @@ def _responsable_exists(responsable, user): return res['uid'][0] return '' @@ -66,7 +123,7 @@ index 71fb28d..44afa7a 100644 """ recherche si un enseignant existe déjà dans l'annuaire enseignant : storage.Enseignant() -@@ -129,8 +129,12 @@ def _enseignant_exists(enseignant, user): +@@ -133,8 +133,12 @@ def _enseignant_exists(enseignant, user): # beurk (homonymes) -> à améliorer #filtres.append("(&%s(cn=%s %s)(objectClass=enseignant))" % (USER_FILTER, # str(enseignant.prenom), str(enseignant.nom)))