From 6e8f2f599320b38976298e0f9deab2b6736e6f09 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sun, 8 Apr 2012 08:45:36 +0900 Subject: [PATCH] when creating child decks, inherit case from parents --- anki/decks.py | 13 ++++++++++--- tests/test_decks.py | 10 ++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/anki/decks.py b/anki/decks.py index bb6da9130..95caac797 100644 --- a/anki/decks.py +++ b/anki/decks.py @@ -115,7 +115,7 @@ class DeckManager(object): g = copy.deepcopy(type) if "::" in name: # not top level; ensure all parents exist - self._ensureParents(name) + name = self._ensureParents(name) g['name'] = name while 1: id = intTime(1000) @@ -230,13 +230,20 @@ class DeckManager(object): return self._path(name)[-1] def _ensureParents(self, name): + "Ensure parents exist, and return name with case matching parents." s = "" - for p in self._path(name)[:-1]: + path = self._path(name) + for p in path[:-1]: if not s: s += p else: 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 ############################################################# diff --git a/tests/test_decks.py b/tests/test_decks.py index 9cfd2b7e3..08e8231bd 100644 --- a/tests/test_decks.py +++ b/tests/test_decks.py @@ -30,6 +30,16 @@ def test_basic(): deck.decks.select(childId) assert deck.decks.selected() == 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(): deck = getEmptyDeck()