correctly handle relearn steps of 1+ days

This commit is contained in:
Damien Elmes 2012-06-20 08:57:49 +09:00
parent 07ae142781
commit 7130f2c1fe

View file

@ -750,20 +750,30 @@ did = ? and queue = 2 and due <= ? limit ?""",
card.ivl = self._nextLapseIvl(card, conf) card.ivl = self._nextLapseIvl(card, conf)
card.factor = max(1300, card.factor-200) card.factor = max(1300, card.factor-200)
card.due = self.today + card.ivl card.due = self.today + card.ivl
# put back in the learn queue? # if suspended as a leech, nothing to do
delay = 0 delay = 0
if conf['delays']: if self._checkLeech(card, conf) and card.queue == -1:
if not card.odue: return delay
card.odue = card.due # if no relearning steps, nothing to do
delay = self._delayForGrade(conf, 0) if not conf['delays']:
card.due = int(delay + time.time()) return delay
# record rev due date for later
if not card.odue:
card.odue = card.due
delay = self._delayForGrade(conf, 0)
card.due = int(delay + time.time())
# queue 1
if card.due < self.dayCutoff:
card.left = len(conf['delays']) card.left = len(conf['delays'])
card.left += self._leftToday(conf['delays'], card.left)*1000 card.left += self._leftToday(conf['delays'], card.left)*1000
card.queue = 1
self.lrnCount += card.left/1000 self.lrnCount += card.left/1000
# leech? card.queue = 1
if not self._checkLeech(card, conf) and conf['delays']:
heappush(self._lrnQueue, (card.due, card.id)) heappush(self._lrnQueue, (card.due, card.id))
else:
# day learn queue
ahead = ((card.due - self.dayCutoff) / 86400) + 1
card.due = self.today + ahead
card.queue = 3
return delay return delay
def _nextLapseIvl(self, card, conf): def _nextLapseIvl(self, card, conf):