0003-synchronize-Fix-cycling-rename-entry-problem-due-to-.patch
src/ldaptools/synchronize.py | ||
---|---|---|
202 | 202 |
'%s: attribute %s deleted ("%s")', |
203 | 203 |
dn, attr, '", "'.join(old_attrs[attr])) |
204 | 204 | |
205 |
@staticmethod |
|
206 |
def _dn_are_equals(dn1, dn2): |
|
207 |
''' Check DNs are equals (even if attribute name case differ) ''' |
|
208 |
return [(p[0][0].lower(), p[0][1]) for p in str2dn(dn1)] == [(p[0][0].lower(), p[0][1]) for p in str2dn(dn2)] |
|
209 | ||
205 | 210 |
def build_actions_for_entries(self, entries): |
206 | 211 |
seen_dn = self.seen_dn |
207 | 212 |
renamed_dn = self.renamed_dn |
... | ... | |
244 | 249 |
new_out_dn = ldap.dn.dn2str(out_ava) |
245 | 250 |
if new_out_dn != target_dn: |
246 | 251 |
seen_dn.add(out_dn) |
247 |
self.rename(new_out_dn, target_dn) |
|
248 |
renamed_dn[str2dn(new_out_dn)] = str2dn(target_dn) |
|
252 |
if not self._dn_are_equals(new_out_dn, target_dn): |
|
253 |
self.rename(new_out_dn, target_dn) |
|
254 |
renamed_dn[str2dn(new_out_dn)] = str2dn(target_dn) |
|
249 | 255 |
if to_dict_of_set(out_entry) != to_dict_of_set(bytes2str_entry(entry)): |
250 | 256 |
self._log_changes(target_dn, entry, out_entry) |
251 | 257 |
new_entry = {} |
252 |
- |