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: |