sobjects/ldapparser.py
changeset 10662 10942ed172de
parent 10089 6346f53c85f1
child 10663 54b8a1f249fb
equal deleted inserted replaced
10661:e6eb0c7c2e98 10662:10942ed172de
    97         if config['delete-entities']:
    97         if config['delete-entities']:
    98             super(DataFeedLDAPAdapter, self).handle_deletion(config, cnx, myuris)
    98             super(DataFeedLDAPAdapter, self).handle_deletion(config, cnx, myuris)
    99             return
    99             return
   100         if myuris:
   100         if myuris:
   101             byetype = {}
   101             byetype = {}
   102             for extid, (eid, etype) in myuris.iteritems():
   102             for extid, (eid, etype) in myuris.items():
   103                 if self.is_deleted(extid, etype, eid):
   103                 if self.is_deleted(extid, etype, eid):
   104                     byetype.setdefault(etype, []).append(str(eid))
   104                     byetype.setdefault(etype, []).append(str(eid))
   105 
   105 
   106             for etype, eids in byetype.iteritems():
   106             for etype, eids in byetype.items():
   107                 if etype != 'CWUser':
   107                 if etype != 'CWUser':
   108                     continue
   108                     continue
   109                 self.info('deactivate %s %s entities', len(eids), etype)
   109                 self.info('deactivate %s %s entities', len(eids), etype)
   110                 for eid in eids:
   110                 for eid in eids:
   111                     wf = cnx.entity_from_eid(eid).cw_adapt_to('IWorkflowable')
   111                     wf = cnx.entity_from_eid(eid).cw_adapt_to('IWorkflowable')
   121             if wf.state == 'deactivated':
   121             if wf.state == 'deactivated':
   122                 wf.fire_transition('activate')
   122                 wf.fire_transition('activate')
   123                 self.info('user %s reactivated', entity.login)
   123                 self.info('user %s reactivated', entity.login)
   124         mdate = attrs.get('modification_date')
   124         mdate = attrs.get('modification_date')
   125         if not mdate or mdate > entity.modification_date:
   125         if not mdate or mdate > entity.modification_date:
   126             attrs = dict( (k, v) for k, v in attrs.iteritems()
   126             attrs = dict( (k, v) for k, v in attrs.items()
   127                           if v != getattr(entity, k))
   127                           if v != getattr(entity, k))
   128             if attrs:
   128             if attrs:
   129                 entity.cw_set(**attrs)
   129                 entity.cw_set(**attrs)
   130                 self.notify_updated(entity)
   130                 self.notify_updated(entity)
   131 
   131 
   133         """ Transform dictionary of LDAP attributes to CW
   133         """ Transform dictionary of LDAP attributes to CW
   134         etype must be CWUser or CWGroup """
   134         etype must be CWUser or CWGroup """
   135         if tdict is None:
   135         if tdict is None:
   136             tdict = {}
   136             tdict = {}
   137         if etype == 'CWUser':
   137         if etype == 'CWUser':
   138             items = self.source.user_attrs.iteritems()
   138             items = self.source.user_attrs.items()
   139         elif etype == 'CWGroup':
   139         elif etype == 'CWGroup':
   140             items = self.source.group_attrs.iteritems()
   140             items = self.source.group_attrs.items()
   141         for sattr, tattr in items:
   141         for sattr, tattr in items:
   142             if tattr not in self.non_attribute_keys:
   142             if tattr not in self.non_attribute_keys:
   143                 try:
   143                 try:
   144                     tdict[tattr] = sdict[sattr]
   144                     tdict[tattr] = sdict[sattr]
   145                 except KeyError:
   145                 except KeyError: