Ne pas créer d’OU spécifique

This commit is contained in:
2025-08-20 09:11:40 +02:00
parent 2b3defafed
commit 8073ca1747

View File

@ -73,7 +73,7 @@ index 0db4982..47f5c80 100755
nscd_start() nscd_start()
log.del_lock() log.del_lock()
diff --git usr/lib/python3/dist-packages/scribe/enseignants.py usr/lib/python3/dist-packages/scribe/enseignants.py 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
+++ usr/lib/python3/dist-packages/scribe/enseignants.py +++ usr/lib/python3/dist-packages/scribe/enseignants.py
@@ -12,21 +12,21 @@ @@ -12,21 +12,21 @@
@ -99,40 +99,7 @@ index 69f3411..244a7af 100644
""" """
_type = 'personnels' _type = 'personnels'
profil = 'enseignant' profil = 'enseignant'
@@ -124,20 +124,32 @@ class Enseignant(User): @@ -145,44 +145,36 @@ 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):
rep = join(AD_HOME_PATH, login) rep = join(AD_HOME_PATH, login)
# répertoire supérieur # répertoire supérieur
clear_acl(rep) clear_acl(rep)
@ -168,9 +135,8 @@ index 69f3411..244a7af 100644
Mise à niveau Enseignant via l'extraction Mise à niveau Enseignant via l'extraction
""" """
- if 'etab' in args: - 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 + 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: else:
user_dn = self.get_user_dn(login) #USER_DN % dict(uid=login, _type=self._type) user_dn = self.get_user_dn(login) #USER_DN % dict(uid=login, _type=self._type)
datas = [] datas = []
@ -180,8 +146,7 @@ index 69f3411..244a7af 100644
if not_empty(args, 'int_id'): if not_empty(args, 'int_id'):
datas.append((MOD_REPLACE, 'intid', args['int_id'] )) datas.append((MOD_REPLACE, 'intid', args['int_id'] ))
if not_empty(args, 'entpersonjointure'): if not_empty(args, 'entpersonjointure'):
datas.append((MOD_REPLACE, 'ENTPersonJointure', args['entpersonjointure'])) @@ -196,21 +188,21 @@ class Enseignant(User):
@@ -196,21 +200,21 @@ class Enseignant(User):
datas.append((MOD_REPLACE, 'ENTAuxEnsCategoDiscipline', args['disciplines'])) datas.append((MOD_REPLACE, 'ENTAuxEnsCategoDiscipline', args['disciplines']))
datas.append((MOD_REPLACE, 'sn', args['nom'])) datas.append((MOD_REPLACE, 'sn', args['nom']))
datas.append((MOD_REPLACE, 'givenName', args['prenom'])) datas.append((MOD_REPLACE, 'givenName', args['prenom']))
@ -204,21 +169,6 @@ index 69f3411..244a7af 100644
""" """
Mise à niveau d'un compte enseignant 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 diff --git usr/lib/python3/dist-packages/scribe/eoleldap.py usr/lib/python3/dist-packages/scribe/eoleldap.py
index 45ec338..9a67c6d 100644 index 45ec338..9a67c6d 100644
--- usr/lib/python3/dist-packages/scribe/eoleldap.py --- usr/lib/python3/dist-packages/scribe/eoleldap.py
@ -282,33 +232,6 @@ index 45ec338..9a67c6d 100644
users = [] users = []
res = self.ldap_admin._search("(&%s%s)" % (USER_FILTER, filtre), attrs) res = self.ldap_admin._search("(&%s%s)" % (USER_FILTER, filtre), attrs)
for user in res: 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 diff --git usr/lib/python3/dist-packages/scribe/eoleuser.py usr/lib/python3/dist-packages/scribe/eoleuser.py
index 05569fd..c092698 100644 index 05569fd..c092698 100644
--- usr/lib/python3/dist-packages/scribe/eoleuser.py --- usr/lib/python3/dist-packages/scribe/eoleuser.py
@ -370,28 +293,22 @@ index 05569fd..c092698 100644
def _get_ead_type(self, login): 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 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
+++ 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): @@ -836,21 +836,21 @@ def _maj_enseignant(enseignant, user, login, etab, administratif=False):
"""
traitement d'un enseignant existant (mise à jour)
enseignant : store.Enseignant()
user : eoleuser.Enseignant()
login : uid de l'utilisateur dans ldap login : uid de l'utilisateur dans ldap
administratif : personnel administratif avec un compte enseignant administratif : personnel administratif avec un compte enseignant
""" """
log.log.debug("maj de %s" % login) log.log.debug("maj de %s" % login)
classe = [] classe = []
groups = [] groups = []
+ special_etab = '00000000'
# attention : des administratifs peuvent avoir un compte enseignant # attention : des administratifs peuvent avoir un compte enseignant
if isinstance(enseignant, Enseignant): if isinstance(enseignant, Enseignant):
old_etab = user.get_etab(login) old_etab = user.get_etab(login)
- if old_etab != etab: if old_etab != etab:
- user._change_etab(login, old_etab, etab) - user._change_etab(login, old_etab, etab)
+ if old_etab != special_etab: + user._change_etab(login, etab)
+ user._change_etab(login, special_etab)
for joint in enseignant.get_classes(): for joint in enseignant.get_classes():
groups.append('profs-%s' % str(joint.classe.nom)) groups.append('profs-%s' % str(joint.classe.nom))
if joint.profprincipal: if joint.profprincipal:
@ -402,7 +319,7 @@ index 34ce0fb..d4a2f27 100644
groups.append('profs-%s' % str(option.nom)) groups.append('profs-%s' % str(option.nom))
disciplines = eval(enseignant.disciplines) disciplines = eval(enseignant.disciplines)
else: 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) log.write_header(config.ENS_HEADER, config.ENS_INFO)
user = LdapEnseignant() user = LdapEnseignant()
user.ldap_admin = connexion user.ldap_admin = connexion
@ -424,7 +341,7 @@ index 34ce0fb..d4a2f27 100644
else: else:
login = _enseignant_exists(enseignant, user) login = _enseignant_exists(enseignant, user)
if login != '': 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) == '': if str(enseignant.nom) == '' or str(enseignant.prenom) == '':
log.infolog("Enseignant n°%s invalide" % str(enseignant.int_id)) log.infolog("Enseignant n°%s invalide" % str(enseignant.int_id))
continue continue