Limiter le test d’existence à l’établissement
This commit is contained in:
@ -72,7 +72,7 @@ index 0db4982..290d66e 100755
|
||||
nscd_start()
|
||||
log.del_lock()
|
||||
diff --git usr/lib/python3/dist-packages/scribe/eoleldap.py usr/lib/python3/dist-packages/scribe/eoleldap.py
|
||||
index 45ec338..9b80f82 100644
|
||||
index 45ec338..dd819eb 100644
|
||||
--- usr/lib/python3/dist-packages/scribe/eoleldap.py
|
||||
+++ usr/lib/python3/dist-packages/scribe/eoleldap.py
|
||||
@@ -8,21 +8,21 @@
|
||||
@ -98,7 +98,7 @@ index 45ec338..9b80f82 100644
|
||||
def is_system_user(user):
|
||||
"""
|
||||
indique si le login proposé est déjà un utilisateur système
|
||||
@@ -120,60 +120,68 @@ class _Ldap(object):
|
||||
@@ -120,75 +120,83 @@ class _Ldap(object):
|
||||
class _LdapEntry(object):
|
||||
"""
|
||||
classe de base pour gérer les entrées ldap
|
||||
@ -169,15 +169,62 @@ index 45ec338..9b80f82 100644
|
||||
return False
|
||||
return True
|
||||
|
||||
def _test_available_name(self, name):
|
||||
- def _test_available_name(self, name):
|
||||
+ def _test_available_name(self, name, etab=None):
|
||||
"""
|
||||
Test la disponibilité d'un nom
|
||||
raise une exception si pas disponible
|
||||
"""
|
||||
- if self._is_group(name):
|
||||
+ if self._is_group(name, etab=etab):
|
||||
raise LdapExistingGroup
|
||||
- elif self._is_user(name):
|
||||
+ elif self._is_user(name, etab=etab):
|
||||
raise LdapExistingUser
|
||||
- elif is_system_user(name):
|
||||
+ elif is_system_user(name, etab=etab):
|
||||
raise SystemExistingUser
|
||||
return True
|
||||
|
||||
def get_niveau(self, classe):
|
||||
"""
|
||||
Retourne le niveau associé à la classe
|
||||
"""
|
||||
self.ldap_admin.connect()
|
||||
res = self._get_niveau(classe)
|
||||
self.ldap_admin.close()
|
||||
diff --git usr/lib/python3/dist-packages/scribe/eoleuser.py usr/lib/python3/dist-packages/scribe/eoleuser.py
|
||||
index 05569fd..7a8d46c 100644
|
||||
index 05569fd..b4a4fb8 100644
|
||||
--- usr/lib/python3/dist-packages/scribe/eoleuser.py
|
||||
+++ usr/lib/python3/dist-packages/scribe/eoleuser.py
|
||||
@@ -259,26 +259,26 @@ class User(LdapEntry):
|
||||
Ajoute un utilisateur
|
||||
**args
|
||||
"""
|
||||
self.filter_must_args(args)
|
||||
self.filter_may_args(args)
|
||||
#force login in lower case #33178
|
||||
login = args['login'].lower()
|
||||
args['login'] = login
|
||||
if match("^[a-zA-Z0-9.\-_]*$", login) is None:
|
||||
raise BadLogin("Login \"%s\" invalide !" % login)
|
||||
- self._test_available_name(login)
|
||||
args.setdefault('etab', None)
|
||||
if args['etab'] is None and 'classe' in args:
|
||||
args['etab'] = self.get_etab_from_group(args['classe'])
|
||||
if args['etab'] == num_etab:
|
||||
args['etab'] = None
|
||||
+ self._test_available_name(login, etab=args['etab'])
|
||||
self.cache_etab['login'][login] = args['etab']
|
||||
# FIXME : fixes #327 mais est-ce le bon endroit ?
|
||||
if tool.not_empty(args, 'date'):
|
||||
args['date'] = tool.deformate_date(args['date'])
|
||||
if 'exp_date' in args: # Can be jj/mm/aaaa or empty string
|
||||
if LDAP_MODE == 'openldap':
|
||||
args['exp_unix_days'] = str(tool.get_days_from_epoch(args['exp_date'])) if args['exp_date'] else '-1'
|
||||
else:
|
||||
args['exp_nt_time'] = str(tool.get_nt_time_from_date(args['exp_date'])) if args['exp_date'] else '0'
|
||||
args.pop('exp_date')
|
||||
@@ -536,31 +536,32 @@ class User(LdapEntry):
|
||||
data = [((MOD_REPLACE, attribut, value))]
|
||||
self.ldap_admin._modify(user_dn, data)
|
||||
|
Reference in New Issue
Block a user