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)
|
return self._newConf(card)
|
||||||
|
|
||||||
def _rescheduleAsRev(self, card, conf, early):
|
def _rescheduleAsRev(self, card, conf, early):
|
||||||
if card.type == 2:
|
lapse = card.type == 2
|
||||||
card.due = max(self.today+1, card.odue)
|
if lapse:
|
||||||
|
if self._resched(card):
|
||||||
|
card.due = max(self.today+1, card.odue)
|
||||||
|
else:
|
||||||
|
card.due = card.odue
|
||||||
card.odue = 0
|
card.odue = 0
|
||||||
else:
|
else:
|
||||||
self._rescheduleNew(card, conf, early)
|
self._rescheduleNew(card, conf, early)
|
||||||
|
@ -566,7 +570,7 @@ did = ? and queue = 3 and due <= ? limit ?""",
|
||||||
card.odue = 0
|
card.odue = 0
|
||||||
card.odid = 0
|
card.odid = 0
|
||||||
# if rescheduling is off, it needs to be set back to a new card
|
# 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.queue = card.type = 0
|
||||||
card.due = self.col.nextID("pos")
|
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):
|
def _graduatingIvl(self, card, conf, early, adj=True):
|
||||||
if card.type == 2:
|
if card.type == 2:
|
||||||
# lapsed card being relearnt
|
# lapsed card being relearnt
|
||||||
if card.odid and conf['resched']:
|
if card.odid:
|
||||||
return self._dynIvlBoost(card)
|
if conf['resched']:
|
||||||
|
return self._dynIvlBoost(card)
|
||||||
return card.ivl
|
return card.ivl
|
||||||
if not early:
|
if not early:
|
||||||
# graduate
|
# graduate
|
||||||
|
@ -1128,6 +1133,8 @@ your short-term review workload will become."""))
|
||||||
left = card.left%1000 - 1
|
left = card.left%1000 - 1
|
||||||
if left <= 0:
|
if left <= 0:
|
||||||
# graduate
|
# graduate
|
||||||
|
if not self._resched(card):
|
||||||
|
return 0
|
||||||
return self._graduatingIvl(card, conf, False, adj=False) * 86400
|
return self._graduatingIvl(card, conf, False, adj=False) * 86400
|
||||||
else:
|
else:
|
||||||
return self._delayForGrade(conf, left)
|
return self._delayForGrade(conf, left)
|
||||||
|
|
|
@ -650,6 +650,24 @@ def test_cram_resched():
|
||||||
assert d.sched.nextIvlStr(c, 3) == ""
|
assert d.sched.nextIvlStr(c, 3) == ""
|
||||||
d.sched.answerCard(c, 3)
|
d.sched.answerCard(c, 3)
|
||||||
assert c.queue == c.type == 0
|
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():
|
def test_adjIvl():
|
||||||
d = getEmptyDeck()
|
d = getEmptyDeck()
|
||||||
|
|
Loading…
Reference in a new issue