don't touch due cards either

This commit is contained in:
Damien Elmes 2012-05-24 18:02:32 +09:00
parent ec1a4f7458
commit fa5fca5941
2 changed files with 50 additions and 10 deletions

View file

@ -746,15 +746,17 @@ did = ? and queue = 2 and due <= ? limit ?""",
def _rescheduleLapse(self, card): def _rescheduleLapse(self, card):
conf = self._lapseConf(card) conf = self._lapseConf(card)
card.lapses += 1
card.lastIvl = card.ivl card.lastIvl = card.ivl
card.ivl = self._nextLapseIvl(card, conf) if self._resched(card):
card.factor = max(1300, card.factor-200) card.lapses += 1
card.due = self.today + card.ivl card.ivl = self._nextLapseIvl(card, conf)
card.factor = max(1300, card.factor-200)
card.due = self.today + card.ivl
# put back in the learn queue? # put back in the learn queue?
delay = 0 delay = 0
if conf['delays']: if conf['delays']:
card.odue = card.due if not card.odue:
card.odue = card.due
delay = self._delayForGrade(conf, 0) delay = self._delayForGrade(conf, 0)
card.due = int(delay + time.time()) card.due = int(delay + time.time())
card.left = len(conf['delays']) card.left = len(conf['delays'])
@ -772,10 +774,13 @@ did = ? and queue = 2 and due <= ? limit ?""",
def _rescheduleRev(self, card, ease): def _rescheduleRev(self, card, ease):
# update interval # update interval
card.lastIvl = card.ivl card.lastIvl = card.ivl
self._updateRevIvl(card, ease) if self._resched(card):
# then the rest self._updateRevIvl(card, ease)
card.factor = max(1300, card.factor+[-150, 0, 150][ease-2]) # then the rest
card.due = self.today + card.ivl card.factor = max(1300, card.factor+[-150, 0, 150][ease-2])
card.due = self.today + card.ivl
else:
card.due = card.odue
if card.odid: if card.odid:
card.did = card.odid card.did = card.odid
card.odid = 0 card.odid = 0

View file

@ -689,7 +689,42 @@ def test_cram_resched():
c.load() c.load()
assert c.ivl == 100 assert c.ivl == 100
assert c.due == d.sched.today + 25 assert c.due == d.sched.today + 25
# due cards # due cards - pass
c = cardcopy
c.due = -25
c.flush()
d.sched.rebuildDyn(did)
d.reset()
c = d.sched.getCard()
d.sched.answerCard(c, 3)
d.sched.emptyDyn(did)
c.load()
assert c.ivl == 100
assert c.due == -25
# fail
c = cardcopy
c.due = -25
c.flush()
d.sched.rebuildDyn(did)
d.reset()
c = d.sched.getCard()
d.sched.answerCard(c, 1)
d.sched.emptyDyn(did)
c.load()
assert c.ivl == 100
assert c.due == -25
# fail with normal grad
c = cardcopy
c.due = -25
c.flush()
d.sched.rebuildDyn(did)
d.reset()
c = d.sched.getCard()
d.sched.answerCard(c, 1)
d.sched.answerCard(c, 3)
c.load()
assert c.ivl == 100
assert c.due == -25
def test_adjIvl(): def test_adjIvl():
d = getEmptyDeck() d = getEmptyDeck()