From e5bd1249d4a9e4fd91b73269b500afab2ec489b4 Mon Sep 17 00:00:00 2001 From: Benjamin Bohard Date: Wed, 27 Aug 2025 16:24:15 +0200 Subject: [PATCH] =?UTF-8?q?=C3=89bauche=20de=20prise=20en=20charge=20dans?= =?UTF-8?q?=20la=20fiche=20enseignant=20dans=20l=E2=80=99EAD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patches.d/scribe-backend.patch | 37 +++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/patches.d/scribe-backend.patch b/patches.d/scribe-backend.patch index 09125c3..3d173a5 100644 --- a/patches.d/scribe-backend.patch +++ b/patches.d/scribe-backend.patch @@ -200,7 +200,7 @@ index 69f3411..19ba7a1 100644 Mise à niveau d'un compte enseignant """ diff --git usr/lib/python3/dist-packages/scribe/eoleldap.py usr/lib/python3/dist-packages/scribe/eoleldap.py -index 45ec338..c3c6bfe 100644 +index 45ec338..0ec3129 100644 --- usr/lib/python3/dist-packages/scribe/eoleldap.py +++ usr/lib/python3/dist-packages/scribe/eoleldap.py @@ -8,21 +8,21 @@ @@ -281,7 +281,7 @@ index 45ec338..c3c6bfe 100644 + if _type == 'login': + etab = [cn[1]['cn'][0] for cn in self.ldap_admin._search(f'(&(objectClass=eolegroupe)(type=Etablissement)(memberUid={name}))', ['cn'])] + else: -+ etab = result[1]['cn'] ++ etab = [result[0].split(',ou=')[-3]] + if not multi_etabs: + etab = etab[0] + except: @@ -298,10 +298,37 @@ index 45ec338..c3c6bfe 100644 else: raise Exception('Unknown mode') diff --git usr/lib/python3/dist-packages/scribe/eoleuser.py usr/lib/python3/dist-packages/scribe/eoleuser.py -index 05569fd..74d9485 100644 +index 05569fd..3cafe9f 100644 --- usr/lib/python3/dist-packages/scribe/eoleuser.py +++ usr/lib/python3/dist-packages/scribe/eoleuser.py -@@ -410,20 +410,25 @@ class User(LdapEntry): +@@ -361,23 +361,25 @@ class User(LdapEntry): + def _inscription(self, login, groupe, sync=True, etab=None, check_etab=True, touch=True): + """ + Inscription d'un utilisateur à un groupe + """ + etabgroup = None + if SUPPORT_ETAB: + etabgroup = self.get_etab_from_group(groupe) + if check_etab: + # vérification de la cohérence + if etab is None: +- etabuser = self.get_etab(login) ++ etabuser = self.get_etab(login, multi_etabs=True) + else: + #on force l'établissement de l'utilisateur (#4827) ++ if not isinstance(etab, list): ++ etab = [etab] + etabuser = etab + if etabgroup != etabuser: + raise Exception("L'utilisateur {0} ne fait pas partie du même établissement que le groupe {1} : {2} - {3}".format(login, groupe, etabuser, etabgroup)) + if not self.has_ftp: + return True + grp = Group() + grp.ldap_admin = self.ldap_admin + gtype = grp.c_get_group_type(groupe) + if self.profil != 'eleve' and gtype in ['Classe', 'Niveau', 'Option']: + # groupes réservés élèves +@@ -410,20 +412,25 @@ class User(LdapEntry): grp = Group() grp.ldap_admin = self.ldap_admin if touch: @@ -327,7 +354,7 @@ index 05569fd..74d9485 100644 rmtree(ftpdir) makedirs(ftpdir, 0o500) system('/bin/chown %s %s' % (login, ftpdir)) -@@ -594,27 +599,27 @@ class User(LdapEntry): +@@ -594,27 +601,27 @@ class User(LdapEntry): authldap = Ldap(binddn=user_dn, passwd=password) try: