when creating child decks, inherit case from parents

This commit is contained in:
Damien Elmes 2012-04-08 08:45:36 +09:00
parent e5bf86c40e
commit 6e8f2f5993
2 changed files with 20 additions and 3 deletions

View file

@ -115,7 +115,7 @@ class DeckManager(object):
g = copy.deepcopy(type) g = copy.deepcopy(type)
if "::" in name: if "::" in name:
# not top level; ensure all parents exist # not top level; ensure all parents exist
self._ensureParents(name) name = self._ensureParents(name)
g['name'] = name g['name'] = name
while 1: while 1:
id = intTime(1000) id = intTime(1000)
@ -230,13 +230,20 @@ class DeckManager(object):
return self._path(name)[-1] return self._path(name)[-1]
def _ensureParents(self, name): def _ensureParents(self, name):
"Ensure parents exist, and return name with case matching parents."
s = "" s = ""
for p in self._path(name)[:-1]: path = self._path(name)
for p in path[:-1]:
if not s: if not s:
s += p s += p
else: else:
s += "::" + p s += "::" + p
self.id(s) # fetch or create
did = self.id(s)
# get original case
s = self.name(did)
name = s + "::" + path[-1]
return name
# Deck configurations # Deck configurations
############################################################# #############################################################

View file

@ -30,6 +30,16 @@ def test_basic():
deck.decks.select(childId) deck.decks.select(childId)
assert deck.decks.selected() == childId assert deck.decks.selected() == childId
assert deck.decks.active() == [childId] assert deck.decks.active() == [childId]
# parents with a different case should be handled correctly
deck.decks.id("ONE")
m = deck.models.current()
m['did'] = deck.decks.id("one::two")
deck.models.save(m)
n = deck.newNote()
n['Front'] = "abc"
deck.addNote(n)
# this will error if child and parent case don't match
deck.sched.deckDueList()
def test_remove(): def test_remove():
deck = getEmptyDeck() deck = getEmptyDeck()