move time taken maximum into group conf

This commit is contained in:
Damien Elmes 2011-03-21 08:18:51 +09:00
parent eb18460945
commit 8b2971f91c
3 changed files with 33 additions and 37 deletions

View file

@ -5,8 +5,6 @@
import time
from anki.utils import intTime, hexifyID
MAX_TIMER = 60
# Cards
##########################################################################
@ -122,4 +120,4 @@ streak=?, lapses=?, grade=?, cycles=?, edue=? where id = ?""",
def timeTaken(self):
"Time taken to answer card, in integer MS."
return int(min(time.time() - self.timerStarted, MAX_TIMER)*1000)
return int(time.time() - self.timerStarted)*1000

View file

@ -34,6 +34,7 @@ defaultConf = {
'fuzz': 0.05,
'minSpace': 1,
},
'maxTaken': 60,
}
class GroupConfig(object):

View file

@ -195,10 +195,6 @@ limit %d""" % self.reportLimit, lim=self.dayCutoff)
else:
card.grade = 0
card.due = time.time() + self._delayForGrade(conf, card.grade)
try:
self._logLrn(card, ease, conf, leaving)
except:
time.sleep(0.01)
self._logLrn(card, ease, conf, leaving)
def _delayForGrade(self, conf, grade):
@ -237,21 +233,23 @@ limit %d""" % self.reportLimit, lim=self.dayCutoff)
card.factor = conf['initialFactor']
def _logLrn(self, card, ease, conf, leaving):
for i in range(2):
try:
# limit time taken to global setting
taken = min(card.timeTaken(), self._cardConf(card)['maxTaken']*1000)
def log():
self.deck.db.execute(
"insert into revlog values (?,?,?,?,?,?,?,?,?)",
int(time.time()*1000), card.id, ease, card.cycles,
# interval
self._delayForGrade(conf, card.grade),
# last interval
self._delayForGrade(conf, max(0, card.grade-1)),
leaving, card.timeTaken(), 0)
return
leaving, taken, 0)
try:
log()
except:
if i == 0:
# last answer was less than 1ms ago; retry
# duplicate pk; retry in 10ms
time.sleep(0.01)
else:
raise
log()
def removeFailed(self):
"Remove failed cards from the learning queue."
@ -338,20 +336,19 @@ queue = 2 %s and due <= :lim order by %s limit %d""" % (
card.due = self.today + card.ivl
def _logRev(self, card, ease):
for i in range(2):
try:
taken = min(card.timeTaken(), self._cardConf(card)['maxTaken']*1000)
def log():
self.deck.db.execute(
"insert into revlog values (?,?,?,?,?,?,?,?,?)",
int(time.time()*1000), card.id, ease, card.reps,
card.ivl, card.lastIvl, card.factor, card.timeTaken(),
card.ivl, card.lastIvl, card.factor, taken,
1)
return
try:
log()
except:
if i == 0:
# last answer was less than 1ms ago; retry
# duplicate pk; retry in 10ms
time.sleep(0.01)
else:
raise
log()
# Interval management
##########################################################################