From f1837e7e0a9acf656575097ddf40eeffa999aa34 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sat, 5 Oct 2013 23:53:09 +0900 Subject: [PATCH] when ensuring model unique, check id not obj this should fix an issue where we were attaching a suffix to non-duplicate names on sync --- anki/models.py | 6 ++++-- tests/test_sync.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/anki/models.py b/anki/models.py index 8aa9d9777..fade814b9 100644 --- a/anki/models.py +++ b/anki/models.py @@ -167,8 +167,10 @@ select id from cards where nid in (select id from notes where mid = ?)""", self.save(m) def ensureNameUnique(self, m): - if m['name'] in self.allNames(m): - m['name'] += "-" + checksum(str(time.time()))[:5] + for mcur in self.all(): + if (mcur['name'] == m['name'] and + mcur['id'] != m['id']): + m['name'] += "-" + checksum(str(time.time()))[:5] def update(self, m): "Add or update an existing model. Used for syncing and merging." diff --git a/tests/test_sync.py b/tests/test_sync.py index cb6f0ae2e..3f2efaad9 100644 --- a/tests/test_sync.py +++ b/tests/test_sync.py @@ -100,7 +100,7 @@ def test_models(): time.sleep(1) deck1.models.save(cm) deck1.save() - assert deck2.models.get(cm['id'])['name'] == "Basic" + assert deck2.models.get(cm['id'])['name'].startswith("Basic") assert client.sync() == "success" assert deck2.models.get(cm['id'])['name'] == "new" # deleting triggers a full sync