reschedule should not operate on filtered/suspended/buried

this should fix some issues with rescheduled cards ending up in an invalid
state
This commit is contained in:
Damien Elmes 2013-09-27 13:30:39 +09:00
parent d36655a8c7
commit 79ed57a445

View file

@ -1295,8 +1295,8 @@ and (queue=0 or (queue=2 and due<=?))""",
def forgetCards(self, ids): def forgetCards(self, ids):
"Put cards at the end of the new queue." "Put cards at the end of the new queue."
self.col.db.execute( self.col.db.execute(
"update cards set type=0,queue=0,ivl=0,odue=0,due=0,factor=? where id in "+ "update cards set type=0,queue=0,ivl=0,due=0,factor=? where odid=0 "
ids2str(ids), 2500) "and queue >= 0 and id in "+ids2str(ids), 2500)
pmax = self.col.db.scalar( pmax = self.col.db.scalar(
"select max(due) from cards where type=0") or 0 "select max(due) from cards where type=0") or 0
# takes care of mod + usn # takes care of mod + usn
@ -1314,7 +1314,7 @@ and (queue=0 or (queue=2 and due<=?))""",
self.removeLrn(ids) self.removeLrn(ids)
self.col.db.executemany(""" self.col.db.executemany("""
update cards set type=2,queue=2,ivl=:ivl,due=:due, update cards set type=2,queue=2,ivl=:ivl,due=:due,
usn=:usn, mod=:mod, factor=:fact where id=:id and odid=0""", usn=:usn, mod=:mod, factor=:fact where id=:id and odid=0 and queue >=0""",
d) d)
def resetCards(self, ids): def resetCards(self, ids):