diff --git a/anki/models.py b/anki/models.py index ddf11d241..8aa9d9777 100644 --- a/anki/models.py +++ b/anki/models.py @@ -8,6 +8,7 @@ from anki.utils import intTime, joinFields, splitFields, ids2str,\ from anki.lang import _ from anki.consts import * from anki.hooks import runHook +import time # Models ########################################################################## @@ -123,8 +124,8 @@ class ModelManager(object): "Get all models." return self.models.values() - def allNames(self): - return [m['name'] for m in self.all()] + def allNames(self, curm=None): + return [m['name'] for m in self.all() if m!=curm] def byName(self, name): "Get model with NAME." @@ -165,8 +166,13 @@ select id from cards where nid in (select id from notes where mid = ?)""", self.setCurrent(m) self.save(m) + def ensureNameUnique(self, m): + if m['name'] in self.allNames(m): + m['name'] += "-" + checksum(str(time.time()))[:5] + def update(self, m): "Add or update an existing model. Used for syncing and merging." + self.ensureNameUnique(m) self.models[str(m['id'])] = m # mark registry changed, but don't bump mod time self.save() diff --git a/aqt/models.py b/aqt/models.py index 939a4db36..e09729922 100644 --- a/aqt/models.py +++ b/aqt/models.py @@ -86,6 +86,7 @@ class Models(QDialog): txt = getText(_("Name:"), default=m['name'])[0] if txt: m['name'] = txt + self.mm.ensureNameUnique(m) self.mm.save(m) self.updateModelsList()