From 17095ae1fb3f0ce04d53bbd457e1b64f9af04ce1 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Fri, 25 May 2012 11:04:53 +0900 Subject: [PATCH] switch args in rated: search; make ease optional --- anki/find.py | 18 +++++++++++------- tests/test_find.py | 9 +++++---- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/anki/find.py b/anki/find.py index 375db644b..48f9aea8d 100644 --- a/anki/find.py +++ b/anki/find.py @@ -243,18 +243,22 @@ class Finder(object): self.col.sched.today, self.col.sched.dayCutoff) def _findRated(self, val): + # days(:optional_ease) r = val.split(":") - if len(r) != 2 or r[0] not in ("1", "2", "3", "4"): - return try: - days = int(r[1]) + days = int(r[0]) except ValueError: return - # bound the search days = min(days, 31) - lim = self.col.sched.dayCutoff - 86400*days - return ("c.id in (select cid from revlog where ease=%s and id>%d)" % - (r[0], (lim*1000))) + # ease + ease = "" + if len(r) > 1: + if r[1] not in ("1", "2", "3", "4"): + return + ease = "and ease=%s" % r[1] + cutoff = (self.col.sched.dayCutoff - 86400*days)*1000 + return ("c.id in (select cid from revlog where id>%d %s)" % + (cutoff, ease)) def _findProp(self, val): # extract diff --git a/tests/test_find.py b/tests/test_find.py index c20346034..4d56f9207 100644 --- a/tests/test_find.py +++ b/tests/test_find.py @@ -179,16 +179,17 @@ def test_findCards(): assert len(deck.findCards("-prop:ease>2")) > 1 # recently failed assert len(deck.findCards("rated:1:1")) == 0 - assert len(deck.findCards("rated:2:1")) == 0 + assert len(deck.findCards("rated:1:2")) == 0 c = deck.sched.getCard() deck.sched.answerCard(c, 2) assert len(deck.findCards("rated:1:1")) == 0 - assert len(deck.findCards("rated:2:1")) == 1 + assert len(deck.findCards("rated:1:2")) == 1 c = deck.sched.getCard() deck.sched.answerCard(c, 1) assert len(deck.findCards("rated:1:1")) == 1 - assert len(deck.findCards("rated:2:1")) == 1 - assert len(deck.findCards("rated:2:0")) == 0 + assert len(deck.findCards("rated:1:2")) == 1 + assert len(deck.findCards("rated:1")) == 2 + assert len(deck.findCards("rated:0:2")) == 0 assert len(deck.findCards("rated:2:2")) == 1 # empty field assert len(deck.findCards("front:")) == 0