From 28e1cc933a20864e63fea6c4dea2f8b5cc05d302 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Thu, 1 Nov 2012 07:05:41 +0900 Subject: [PATCH] more robust deck list - if we catch two decks with the same name, remove one and rebuild - instead of trying to ensure parents which may fail if an existing deck with a different case already exists, delete the deck that's missing parents --- anki/sched.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/anki/sched.py b/anki/sched.py index 8a7645e34..861d324fa 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -205,14 +205,19 @@ order by due""" % self._deckLimit(), parts = parts[:-1] return "::".join(parts) for deck in decks: + # if we've already seen the exact same deck name, remove the + # invalid duplicate and reload + if deck['name'] in lims: + self.col.decks.rem(deck['id'], cardsToo=False, childrenToo=True) + return self.deckDueList() p = parent(deck['name']) # new nlim = self._deckNewLimitSingle(deck) if p: - # if parent was missing, add and restart if p not in lims: - deck['name'] = self.col.decks._ensureParents(deck['name']) - self.col.decks.save(deck) + # if parent was missing, this deck is invalid, and we + # need to reload the deck list + self.col.decks.rem(deck['id'], cardsToo=False, childrenToo=True) return self.deckDueList() nlim = min(nlim, lims[p][0]) new = self._newForDeck(deck['id'], nlim)