remove review order options

As cram decks provide a more efficient way of ordering reviews, we can limit
normal reviews to just due order.
This commit is contained in:
Damien Elmes 2012-03-13 19:25:28 +09:00
parent 81c07158e9
commit dc85212bfe
4 changed files with 9 additions and 26 deletions

View file

@ -13,11 +13,6 @@ NEW_CARDS_FIRST = 2
NEW_CARDS_RANDOM = 0
NEW_CARDS_DUE = 1
# review card sort order
REV_CARDS_RANDOM = 0
REV_CARDS_OLD_FIRST = 1
REV_CARDS_NEW_FIRST = 2
# removal types
REM_CARD = 0
REM_NOTE = 1

View file

@ -66,7 +66,6 @@ defaultConf = {
'fuzz': 0.05,
'minSpace': 1,
'fi': [10, 10],
'order': REV_CARDS_RANDOM,
},
'maxTaken': 60,
'timer': 0,

View file

@ -581,20 +581,21 @@ did = ? and queue = 2 and due <= ? limit %d)""" % lim,
while self._revDids:
did = self._newDids[0]
lim = min(self.queueLimit, self._deckRevLimit(did))
order = self._revOrder(did)
if lim:
# fill the queue with the current did
self._revQueue = self.col.db.list("""
select id from cards where
did = ? and queue = 2 and due <= ? %s limit ?""" % order,
did = ? and queue = 2 and due <= ? limit ?""",
did, self.today, lim)
if self._revQueue:
if not order:
if self.col.decks.get(did)['dyn']:
# dynamic decks need due order preserved
self._revQueue.reverse()
else:
# random order for regular reviews
r = random.Random()
r.seed(self.today)
r.shuffle(self._revQueue)
else:
self._revQueue.reverse()
return True
# nothing left in the deck; move to next
self._newDids.pop(0)
@ -604,15 +605,6 @@ did = ? and queue = 2 and due <= ? %s limit ?""" % order,
self.revCount -= 1
return self.col.getCard(self._revQueue.pop())
def _revOrder(self, did):
d = self.col.decks.confForDid(did)
if d['dyn']:
return ""
o = d['rev']['order']
if o:
return "order by %s" % ("ivl desc", "ivl")[o-1]
return ""
# Answering a review card
##########################################################################

View file

@ -511,13 +511,10 @@ def test_cram():
c.flush()
d.reset()
assert d.sched.counts() == (0,0,1)
# cram again, with the review treated as a cram
# cram again
did = d.decks.newDyn("Cram")
d.decks.get(did)['cramRev'] = True
d.sched.rebuildDyn(did)
d.reset()
assert d.sched.counts() == (1,0,0)
# but if cramRev is false, it's placed in the review queue instead
# if cramRev is false, it's placed in the review queue instead
# fixme: cards pulled from a deck with cramRev=True remain in that state
d.decks.get(did)['cramRev'] = False
d.sched.rebuildDyn(did)
d.reset()