fix regression when renaming deck to child of itself

This commit is contained in:
Damien Elmes 2012-10-30 21:05:25 +09:00
parent 6ff5c3b2c2
commit d5e43b364c

View file

@ -221,16 +221,18 @@ class DeckManager(object):
# make sure target node doesn't already exist # make sure target node doesn't already exist
if newName in self.allNames(): if newName in self.allNames():
raise DeckRenameError(_("That deck already exists.")) raise DeckRenameError(_("That deck already exists."))
# ensure we have parents
newName = self._ensureParents(newName)
# rename children # rename children
for grp in self.all(): for grp in self.all():
if grp['name'].startswith(g['name'] + "::"): if grp['name'].startswith(g['name'] + "::"):
grp['name'] = grp['name'].replace(g['name']+ "::", grp['name'] = grp['name'].replace(g['name']+ "::",
newName + "::") newName + "::")
self.save(grp) self.save(grp)
# ensure we have parents # adjust name
newName = self._ensureParents(newName)
# adjust name and save
g['name'] = newName g['name'] = newName
# ensure we have parents again, as we may have renamed parent->child
newName = self._ensureParents(newName)
self.save(g) self.save(g)
# renaming may have altered active did order # renaming may have altered active did order
self.maybeAddToActive() self.maybeAddToActive()