From 4a4f4797dbdd43f49c539363deb9023b33bce4f0 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Tue, 15 Nov 2011 02:53:55 +0900 Subject: [PATCH] update daily counts on reset instead of each review --- anki/sched.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/anki/sched.py b/anki/sched.py index e520748bd..d8f1f06f0 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -113,9 +113,6 @@ order by due""" % self._groupLimit(), key = type+"Today" for g in ([self.deck.groups.get(card.gid)] + self.deck.groups.parents(card.gid)): - # ensure we're on the correct day - if g[key][0] != self.today: - g[key] = [self.today, 0] # add g[key][1] += cnt self.deck.groups.save(g) @@ -318,9 +315,6 @@ select id, due from cards where gid = ? and queue = 0 limit ?""", gid, lim) return lim def _groupNewLimitSingle(self, g): - # update day if necessary - if g['newToday'][0] != self.today: - g['newToday'] = [self.today, 0] c = self.deck.groups.conf(g['id']) return max(0, c['new']['perDay'] - g['newToday'][1]) @@ -664,11 +658,25 @@ gid in %s and queue = 2 and due <= :lim %s limit %d""" % ( self.today = int((time.time() - self.deck.crt) / 86400) # end of day cutoff self.dayCutoff = self.deck.crt + (self.today+1)*86400 + # update all selected groups + def update(g): + save = False + for t in "new", "rev", "lrn", "time": + key = t+"Today" + if g[key][0] != self.today: + save = True + g[key] = [self.today, 0] + if save: + self.deck.groups.save(g) + for gid in self.deck.groups.active(): + update(self.deck.groups.get(gid)) + # update parents too + for grp in self.deck.groups.parents(self.deck.groups.selected()): + update(grp) def _checkDay(self): # check if the day has rolled over if time.time() > self.dayCutoff: - self._updateCutoff() self.reset() # Deck finished state