cubicweb/sobjects/ldapparser.py
branch3.26
changeset 12618 3f125fdbcd70
parent 11758 3f81636a75db
child 12626 32ee89340e59
equal deleted inserted replaced
12617:f59439bac0a8 12618:3f125fdbcd70
   154         metagenerator = UserMetaGenerator(self._cw, source=self.source)
   154         metagenerator = UserMetaGenerator(self._cw, source=self.source)
   155         return stores.NoHookRQLObjectStore(self._cw, metagenerator)
   155         return stores.NoHookRQLObjectStore(self._cw, metagenerator)
   156 
   156 
   157     def extentities_generator(self):
   157     def extentities_generator(self):
   158         self.debug('processing ldapfeed source %s %s', self.source, self.searchgroupfilterstr)
   158         self.debug('processing ldapfeed source %s %s', self.source, self.searchgroupfilterstr)
       
   159         # get existing users *not* managed by this source
       
   160         non_managed_users = dict(self._cw.execute(
       
   161             'Any L, SN WHERE'
       
   162             ' U is CWUser, U login L,'
       
   163             ' U cw_source S, S name SN,'
       
   164             ' NOT S eid %(eid)s',
       
   165             {'eid': self.source.eid}, build_descr=False))
   159         # generate users and email addresses
   166         # generate users and email addresses
   160         for userdict in self.user_source_entities_by_extid.values():
   167         for userdict in self.user_source_entities_by_extid.values():
   161             attrs = self.ldap2cwattrs(userdict, 'CWUser')
   168             attrs = self.ldap2cwattrs(userdict, 'CWUser')
       
   169             login = attrs['login'][0]
       
   170             try:
       
   171                 source = non_managed_users[login]
       
   172             except KeyError:
       
   173                 pass
       
   174             else:
       
   175                 self.error(
       
   176                     'not synchronizing user %s. User already exist in source %s',
       
   177                     login, source)
       
   178                 continue
   162             pwd = attrs.get('upassword')
   179             pwd = attrs.get('upassword')
   163             if not pwd:
   180             if not pwd:
   164                 # generate a dumb password if not fetched from ldap (see
   181                 # generate a dumb password if not fetched from ldap (see
   165                 # userPassword)
   182                 # userPassword)
   166                 pwd = crypt_password(generate_password())
   183                 pwd = crypt_password(generate_password())