mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 23:42:23 -04:00
fix check for nesting under filtered deck
This commit is contained in:
parent
bbccc4fd6b
commit
49d1d8f9fd
1 changed files with 20 additions and 5 deletions
|
@ -252,13 +252,12 @@ class DeckManager:
|
||||||
# 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."))
|
||||||
|
# make sure we're not nesting under a filtered deck
|
||||||
|
for p in self.parentsByName(newName):
|
||||||
|
if p['dyn']:
|
||||||
|
raise DeckRenameError(_("A filtered deck cannot have subdecks."))
|
||||||
# ensure we have parents
|
# ensure we have parents
|
||||||
newName = self._ensureParents(newName)
|
newName = self._ensureParents(newName)
|
||||||
# make sure we're not nesting under a filtered deck
|
|
||||||
if '::' in newName:
|
|
||||||
newParent = '::'.join(newName.split('::')[:-1])
|
|
||||||
if self.byName(newParent)['dyn']:
|
|
||||||
raise DeckRenameError(_("A filtered deck cannot have subdecks."))
|
|
||||||
# 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'] + "::"):
|
||||||
|
@ -488,6 +487,22 @@ class DeckManager:
|
||||||
parents[c] = self.get(self.id(p))
|
parents[c] = self.get(self.id(p))
|
||||||
return parents
|
return parents
|
||||||
|
|
||||||
|
def parentsByName(self, name):
|
||||||
|
"All existing parents of name"
|
||||||
|
if "::" not in name:
|
||||||
|
return []
|
||||||
|
names = name.split("::")[:-1]
|
||||||
|
head = []
|
||||||
|
parents = []
|
||||||
|
|
||||||
|
while names:
|
||||||
|
head.append(names.pop(0))
|
||||||
|
deck = self.byName("::".join(head))
|
||||||
|
if deck:
|
||||||
|
parents.append(deck)
|
||||||
|
|
||||||
|
return parents
|
||||||
|
|
||||||
# Sync handling
|
# Sync handling
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue