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