From 60dd0b426cfd5ebec6478122acb7cae866eea133 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Tue, 13 Mar 2012 18:11:25 +0900 Subject: [PATCH] store order as an index --- anki/consts.py | 11 +++++++++++ anki/decks.py | 2 +- anki/sched.py | 4 ++-- tests/test_sched.py | 3 ++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/anki/consts.py b/anki/consts.py index 573ca0134..bb4fb2047 100644 --- a/anki/consts.py +++ b/anki/consts.py @@ -31,6 +31,10 @@ COUNT_REMAINING = 1 MEDIA_ADD = 0 MEDIA_REM = 1 +# dynamic deck order +DYN_OLDEST = 0 +DYN_RANDOM = 1 + # deck schema & syncing vars SCHEMA_VERSION = 3 SYNC_ZIP_SIZE = int(2.5*1024*1024) @@ -66,3 +70,10 @@ def alignmentLabels(): 1: _("Left"), 2: _("Right"), } + +# todo: expand +def dynOrderLabels(): + return { + 0: _("Oldest seen first"), + 1: _("Random"), + } diff --git a/anki/decks.py b/anki/decks.py index a2b4feb29..463c12290 100644 --- a/anki/decks.py +++ b/anki/decks.py @@ -38,7 +38,7 @@ defaultDynamicDeck = { 'cramRev': False, 'search': "", 'limit': 100, - 'order': 'oldestSeen', + 'order': 0, 'shift': True, } diff --git a/anki/sched.py b/anki/sched.py index 950193fe4..cc60347fa 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -740,7 +740,7 @@ did = ? and queue = 2 and due <= ? %s limit ?""" % order, order = self._dynOrder(deck) limit = " limit %d" % deck['limit'] ids = self.col.findCards(deck['search'], order=order+limit) - if deck['order'] == "random": + if deck['order'] == DYN_RANDOM: random.shuffle(ids) # move the cards over self._moveToDyn(did, ids) @@ -754,7 +754,7 @@ usn = ?, mod = ? where did = ?""", self.col.usn(), intTime(), did) def _dynOrder(self, deck): o = deck['order'] - if o == "oldestSeen": + if o == DYN_OLDEST: return "order by c.mod" # elif o == "added": # return "order by n.id" diff --git a/tests/test_sched.py b/tests/test_sched.py index 37bf88f0a..1b78a9ee7 100644 --- a/tests/test_sched.py +++ b/tests/test_sched.py @@ -511,8 +511,9 @@ def test_cram(): c.flush() d.reset() assert d.sched.counts() == (0,0,1) - # cram again, by default it's treated like a review + # cram again, with the review treated as a cram did = d.decks.newDyn("Cram") + d.decks.get(did)['cramRev'] = True d.sched.rebuildDyn(did) d.reset() assert d.sched.counts() == (1,0,0)