diff --git a/patches.d/scribe-backend.patch b/patches.d/scribe-backend.patch index b323f70..1f978cb 100644 --- a/patches.d/scribe-backend.patch +++ b/patches.d/scribe-backend.patch @@ -73,7 +73,7 @@ index 0db4982..47f5c80 100755 nscd_start() log.del_lock() diff --git usr/lib/python3/dist-packages/scribe/enseignants.py usr/lib/python3/dist-packages/scribe/enseignants.py -index 69f3411..244a7af 100644 +index 69f3411..101bd97 100644 --- usr/lib/python3/dist-packages/scribe/enseignants.py +++ usr/lib/python3/dist-packages/scribe/enseignants.py @@ -12,21 +12,21 @@ @@ -99,40 +99,7 @@ index 69f3411..244a7af 100644 """ _type = 'personnels' profil = 'enseignant' -@@ -124,20 +124,32 @@ class Enseignant(User): - datas.append((MOD_REPLACE, 'FederationKey', - args['mail_acad'].lower())) - if not_empty(args, 'disciplines') and args['disciplines'] != []: - datas.append((MOD_REPLACE, 'ENTAuxEnsCategoDiscipline', - args['disciplines'])) - # FIXME : remplissage d'autres attributs provenant de ENTAuxEnseignant - self.ldap_admin._modify(user_dn, datas) - if maildir != '': - send_first_mail(mail) - -+ def exec_smbldap_useradd(self, user_add_args, login): -+ """ -+ exécute smbldap-useradd -+ """ -+ cmd = ["/usr/sbin/smbldap-useradd"] -+ cmd.extend(self.user_add_params) -+ cmd.extend(user_add_args) -+ etab = self.get_etab(login) -+ force_dn = {'usersdn="ou=utilisateurs,${etab},${suffix}"': 'usersdn="ou=utilisateurs,${specific},${suffix}"', -+ 'groupsdn="ou=local,ou=Groupes,${etab},${suffix}"': 'groupsdn="${suffix}"'} -+ launch_smbldap_tool(cmd, num_etab, etab, force_dn=force_dn) -+ - def _add_perso(self, login, **args): - """ - Crée les différents répertoires de l'utilisateur - """ - abc = join(HOME_PATH, login[0]) - rep = join(abc, login) - perso = join(rep, 'perso') - # Eole-AD - create_ad_home(login, rep) - if not isdir(perso): -@@ -145,45 +157,37 @@ class Enseignant(User): +@@ -145,44 +145,36 @@ class Enseignant(User): rep = join(AD_HOME_PATH, login) # répertoire supérieur clear_acl(rep) @@ -168,9 +135,8 @@ index 69f3411..244a7af 100644 Mise à niveau Enseignant via l'extraction """ - if 'etab' in args: -- user_dn = self.get_user_dn(login, force_etab=args.get('etab')) #USER_DN % dict(uid=login, _type=self._type) + if 'etab' in args: # cas multi-étab => enseignant dans une UO spécifique -+ user_dn = self.get_user_dn(login, force_etab='00000000') #USER_DN % dict(uid=login, _type=self._type) + user_dn = self.get_user_dn(login, force_etab=args.get('etab')) #USER_DN % dict(uid=login, _type=self._type) else: user_dn = self.get_user_dn(login) #USER_DN % dict(uid=login, _type=self._type) datas = [] @@ -180,8 +146,7 @@ index 69f3411..244a7af 100644 if not_empty(args, 'int_id'): datas.append((MOD_REPLACE, 'intid', args['int_id'] )) if not_empty(args, 'entpersonjointure'): - datas.append((MOD_REPLACE, 'ENTPersonJointure', args['entpersonjointure'])) -@@ -196,21 +200,21 @@ class Enseignant(User): +@@ -196,21 +188,21 @@ class Enseignant(User): datas.append((MOD_REPLACE, 'ENTAuxEnsCategoDiscipline', args['disciplines'])) datas.append((MOD_REPLACE, 'sn', args['nom'])) datas.append((MOD_REPLACE, 'givenName', args['prenom'])) @@ -204,21 +169,6 @@ index 69f3411..244a7af 100644 """ Mise à niveau d'un compte enseignant """ -@@ -326,10 +330,14 @@ class Enseignant(User): - return res - - def _is_enseignant(self, uid): - """ - test si l'utilisateur existe dans l'annuaire - """ - uidfilter = "(&%s(uid=%s))" % (PROF_FILTER, uid) - if self.ldap_admin._search_one(uidfilter): - return True - return False -+ -+ -+ def get_etab(self, login, multi_etabs=False): -+ return '00000000' diff --git usr/lib/python3/dist-packages/scribe/eoleldap.py usr/lib/python3/dist-packages/scribe/eoleldap.py index 45ec338..9a67c6d 100644 --- usr/lib/python3/dist-packages/scribe/eoleldap.py @@ -282,33 +232,6 @@ index 45ec338..9a67c6d 100644 users = [] res = self.ldap_admin._search("(&%s%s)" % (USER_FILTER, filtre), attrs) for user in res: -diff --git usr/lib/python3/dist-packages/scribe/eoletools.py usr/lib/python3/dist-packages/scribe/eoletools.py -index a469716..0ceffc2 100644 ---- usr/lib/python3/dist-packages/scribe/eoletools.py -+++ usr/lib/python3/dist-packages/scribe/eoletools.py -@@ -617,21 +617,21 @@ def move_share_datas(filepath): - def launch_smbldap_tool(cmd, ref_etab, etab, force_dn={}): - tempfile = None - if etab != None and ref_etab != etab: - filename = '%s/etc/smbldap-tools/smbldap.conf' % conteneurs.get('container_path_fichier', '') - confdir = '/etc/smbldap-tools/' - fd, tempfile = mkstemp(suffix='.temp', dir='%s%s' % (conteneurs.get('container_path_fichier', ''), confdir)) - container_file = '%s%s' % (confdir, basename(tempfile)) - fh = open(filename, 'r') - filecontent = fh.read() - fh.close() -- newcontent = filecontent.replace('num_etab="{0}"'.format(ref_etab), 'num_etab="{0}"'.format(etab)) -+ newcontent = filecontent #filecontent.replace('num_etab="{0}"'.format(ref_etab), 'num_etab="{0}"'.format(etab)) - for old, new in list(force_dn.items()): - newcontent = newcontent.replace(old, new) - fh = open(tempfile, 'w') - fh.write(newcontent) - fh.close() - env = {'SMBLDAP_CONF': container_file} - else: - env = None - res = system_out(cmd, container=CONTAINER_NAME, env=env) - if tempfile is not None: diff --git usr/lib/python3/dist-packages/scribe/eoleuser.py usr/lib/python3/dist-packages/scribe/eoleuser.py index 05569fd..c092698 100644 --- usr/lib/python3/dist-packages/scribe/eoleuser.py @@ -370,28 +293,22 @@ index 05569fd..c092698 100644 def _get_ead_type(self, login): diff --git usr/lib/python3/dist-packages/scribe/importation/writer.py usr/lib/python3/dist-packages/scribe/importation/writer.py -index 34ce0fb..d4a2f27 100644 +index 34ce0fb..b1f1e31 100644 --- usr/lib/python3/dist-packages/scribe/importation/writer.py +++ usr/lib/python3/dist-packages/scribe/importation/writer.py -@@ -832,25 +832,26 @@ def _maj_enseignant(enseignant, user, login, etab, administratif=False): - """ - traitement d'un enseignant existant (mise à jour) - enseignant : store.Enseignant() - user : eoleuser.Enseignant() +@@ -836,21 +836,21 @@ def _maj_enseignant(enseignant, user, login, etab, administratif=False): login : uid de l'utilisateur dans ldap administratif : personnel administratif avec un compte enseignant """ log.log.debug("maj de %s" % login) classe = [] groups = [] -+ special_etab = '00000000' # attention : des administratifs peuvent avoir un compte enseignant if isinstance(enseignant, Enseignant): old_etab = user.get_etab(login) -- if old_etab != etab: + if old_etab != etab: - user._change_etab(login, old_etab, etab) -+ if old_etab != special_etab: -+ user._change_etab(login, special_etab) ++ user._change_etab(login, etab) for joint in enseignant.get_classes(): groups.append('profs-%s' % str(joint.classe.nom)) if joint.profprincipal: @@ -402,7 +319,7 @@ index 34ce0fb..d4a2f27 100644 groups.append('profs-%s' % str(option.nom)) disciplines = eval(enseignant.disciplines) else: -@@ -885,20 +886,21 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL +@@ -885,20 +885,21 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL log.write_header(config.ENS_HEADER, config.ENS_INFO) user = LdapEnseignant() user.ldap_admin = connexion @@ -424,7 +341,7 @@ index 34ce0fb..d4a2f27 100644 else: login = _enseignant_exists(enseignant, user) if login != '': -@@ -909,29 +911,31 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL +@@ -909,29 +910,31 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL if str(enseignant.nom) == '' or str(enseignant.prenom) == '': log.infolog("Enseignant n°%s invalide" % str(enseignant.int_id)) continue