From 1f8adc791a96333f96fa562c1ea71185bab4a290 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sat, 13 Nov 2010 21:39:52 +0900 Subject: [PATCH] a few failed cards related fixes - make sure cardLimit() matches on sql statements that are broken over lines - fix logic in getCardId() - don't increment failed count if delay1>0 and card was mature --- anki/deck.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/anki/deck.py b/anki/deck.py index 2eb087f75..60e36c9b4 100644 --- a/anki/deck.py +++ b/anki/deck.py @@ -221,17 +221,17 @@ class Deck(object): yids = tagIds(self.s, yes).values() nids = tagIds(self.s, no).values() return sql.replace( - "where ", + "where", "where +c.id in (select cardId from cardTags where " - "tagId in %s and tagId not in %s) and " % ( + "tagId in %s and tagId not in %s) and" % ( ids2str(yids), ids2str(nids))) elif no: nids = tagIds(self.s, no).values() return sql.replace( - "where ", + "where", "where +c.id not in (select cardId from cardTags where " - "tagId in %s) and " % ids2str(nids)) + "tagId in %s) and" % ids2str(nids)) else: return sql @@ -618,7 +618,7 @@ limit %s""" % (self.cramOrder, self.queueLimit))) if self.failedQueue: # failed card due? if self.delay0: - if self.failedQueue[-1][2] < time.time() + self.delay0: + if self.failedQueue[-1][2] + self.delay0 < time.time(): return self.failedQueue[-1][0] # failed card queue too big? if (self.failedCardMax and @@ -779,7 +779,8 @@ where id in """ self.spaceCards(card, space) # adjust counts for current card if ease == 1: - self.failedSoonCount += 1 + if not (oldState == "mature" and self.delay1): + self.failedSoonCount += 1 if oldQueue == 0: self.failedSoonCount -= 1 elif oldQueue == 1: