timeboxing, delay lapsed

This commit is contained in:
Damien Elmes 2009-01-05 13:41:19 +09:00
parent cdc37fa7c0
commit 2319cbcc71

View file

@ -117,6 +117,8 @@ class Deck(object):
self.lastTags = u"" self.lastTags = u""
self.lastLoaded = time.time() self.lastLoaded = time.time()
self.undoEnabled = False self.undoEnabled = False
self.sessionStartReps = 0
self.sessionStartTime = 0
def modifiedSinceSave(self): def modifiedSinceSave(self):
return self.modified > self.lastLoaded return self.modified > self.lastLoaded
@ -134,10 +136,10 @@ class Deck(object):
def getCardId(self): def getCardId(self):
"Return the next due card id, or None." "Return the next due card id, or None."
# failed card due? # failed card due?
if self.failedNowCount: if self.delay0 and self.failedNowCount:
return self.s.scalar("select id from failedCards limit 1") return self.s.scalar("select id from failedCards limit 1")
# failed card queue too big? # failed card queue too big?
if self.failedSoonCount >= self.failedCardMax: if self.delay0 and self.failedSoonCount >= self.failedCardMax:
return self.s.scalar( return self.s.scalar(
"select id from failedCards limit 1") "select id from failedCards limit 1")
# distribute new cards? # distribute new cards?
@ -153,7 +155,7 @@ class Deck(object):
if id: if id:
return id return id
# display failed cards early # display failed cards early
if self.collapseTime: if self.collapseTime or not self.delay0:
id = self.s.scalar( id = self.s.scalar(
"select id from failedCards limit 1") "select id from failedCards limit 1")
return id return id
@ -582,7 +584,7 @@ select count(id) from cards where combinedDue < :time
and priority in (1,2,3,4) and type in (0, 1)""", time=time) and priority in (1,2,3,4) and type in (0, 1)""", time=time)
def deckFinishedMsg(self): def deckFinishedMsg(self):
return _(''' return _('''\
<div style="white-space: normal;"> <div style="white-space: normal;">
<h1>Congratulations!</h1>You have finished the deck for now.<br><br> <h1>Congratulations!</h1>You have finished the deck for now.<br><br>
%(next)s %(next)s
@ -1358,6 +1360,25 @@ where id = :id""", pending)
assert '\\' not in n assert '\\' not in n
return n return n
# Session handling
##########################################################################
def startSession(self):
self.sessionStartTime = time.time()
self.sessionStartReps = self.getStats()['dTotal']
def sessionLimitReached(self):
if not self.sessionStartTime:
# not started
return False
if (self.sessionTimeLimit and time.time() >
(self.sessionStartTime + self.sessionTimeLimit)):
return True
if (self.sessionRepLimit and self.sessionRepLimit <=
self.getStats()['dTotal'] - self.sessionStartReps):
return True
return False
# Media # Media
########################################################################## ##########################################################################
@ -2173,6 +2194,8 @@ where interval < 1""")
if deck.version < 19: if deck.version < 19:
# permanent undo log causes various problems, revert to temp # permanent undo log causes various problems, revert to temp
deck.s.statement("drop table undoLog") deck.s.statement("drop table undoLog")
deck.sessionTimeLimit = 300
deck.sessionRepLimit = 0
deck.version = 19 deck.version = 19
deck.s.commit() deck.s.commit()
deck.s.statement("vacuum") deck.s.statement("vacuum")