Fix identconflict handling

See #495
This commit is contained in:
Markus Unterwaditzer 2016-09-02 18:21:39 +02:00
parent 5a382be9c6
commit b6f009e79e

View file

@ -54,9 +54,9 @@ class IdentConflict(SyncError):
@hrefs.setter
def hrefs(self, val):
val = set(val)
assert len(val) > 1
self._hrefs = val
new_val = set(val)
assert len(new_val) > 1, val
self._hrefs = new_val
class StorageEmpty(SyncError):
@ -98,10 +98,11 @@ class StorageSyncer(object):
self.idents = {}
def _store_props(ident, props):
if self.idents.setdefault(ident, props) is not props:
new_props = self.idents.setdefault(ident, props)
if new_props is not props:
raise IdentConflict(storage=self.storage,
hrefs=[self.idents[ident]['href'],
href])
hrefs=[new_props['href'],
props['href']])
if ident in self.status:
# Necessary if item's href changes.