mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 14:32:22 -04:00
and undue cards have untouched ivl
This commit is contained in:
parent
455796f189
commit
e3bb4a817e
2 changed files with 30 additions and 5 deletions
|
@ -552,8 +552,12 @@ did = ? and queue = 3 and due <= ? limit ?""",
|
|||
return self._newConf(card)
|
||||
|
||||
def _rescheduleAsRev(self, card, conf, early):
|
||||
if card.type == 2:
|
||||
card.due = max(self.today+1, card.odue)
|
||||
lapse = card.type == 2
|
||||
if lapse:
|
||||
if self._resched(card):
|
||||
card.due = max(self.today+1, card.odue)
|
||||
else:
|
||||
card.due = card.odue
|
||||
card.odue = 0
|
||||
else:
|
||||
self._rescheduleNew(card, conf, early)
|
||||
|
@ -566,7 +570,7 @@ did = ? and queue = 3 and due <= ? limit ?""",
|
|||
card.odue = 0
|
||||
card.odid = 0
|
||||
# if rescheduling is off, it needs to be set back to a new card
|
||||
if not resched:
|
||||
if not resched and not lapse:
|
||||
card.queue = card.type = 0
|
||||
card.due = self.col.nextID("pos")
|
||||
|
||||
|
@ -592,8 +596,9 @@ did = ? and queue = 3 and due <= ? limit ?""",
|
|||
def _graduatingIvl(self, card, conf, early, adj=True):
|
||||
if card.type == 2:
|
||||
# lapsed card being relearnt
|
||||
if card.odid and conf['resched']:
|
||||
return self._dynIvlBoost(card)
|
||||
if card.odid:
|
||||
if conf['resched']:
|
||||
return self._dynIvlBoost(card)
|
||||
return card.ivl
|
||||
if not early:
|
||||
# graduate
|
||||
|
@ -1128,6 +1133,8 @@ your short-term review workload will become."""))
|
|||
left = card.left%1000 - 1
|
||||
if left <= 0:
|
||||
# graduate
|
||||
if not self._resched(card):
|
||||
return 0
|
||||
return self._graduatingIvl(card, conf, False, adj=False) * 86400
|
||||
else:
|
||||
return self._delayForGrade(conf, left)
|
||||
|
|
|
@ -650,6 +650,24 @@ def test_cram_resched():
|
|||
assert d.sched.nextIvlStr(c, 3) == ""
|
||||
d.sched.answerCard(c, 3)
|
||||
assert c.queue == c.type == 0
|
||||
# undue reviews should also be unaffected
|
||||
c.ivl = 100
|
||||
c.type = c.queue = 2
|
||||
c.due = d.sched.today + 25
|
||||
c.factor = 2500
|
||||
c.flush()
|
||||
cardcopy = copy.copy(c)
|
||||
d.sched.rebuildDyn(did)
|
||||
d.reset()
|
||||
c = d.sched.getCard()
|
||||
assert ni(c, 1) == 600
|
||||
assert ni(c, 2) == 0
|
||||
assert ni(c, 3) == 0
|
||||
d.sched.answerCard(c, 2)
|
||||
assert c.ivl == 100
|
||||
assert c.due == d.sched.today + 25
|
||||
# check failure too
|
||||
|
||||
|
||||
def test_adjIvl():
|
||||
d = getEmptyDeck()
|
||||
|
|
Loading…
Reference in a new issue