diff --git a/anki/deck.py b/anki/deck.py index fd6b710c2..64fe90206 100644 --- a/anki/deck.py +++ b/anki/deck.py @@ -391,7 +391,7 @@ due > :now and due < :now""", now=time.time()) ncards = 0 isRandom = self.qconf['newCardOrder'] == NEW_CARDS_RANDOM if isRandom: - due = random.randrange(0, 10000) + due = random.randrange(0, 1000000) # flush the fact so we get its id fact.flush() for template in cms: @@ -1464,8 +1464,6 @@ seq > :s and seq <= :e order by seq desc""", s=start, e=end) def updateDynamicIndices(self): # determine required columns required = [] - if self.qconf['newTodayOrder'] == NEW_TODAY_ORD: - required.append("ord") if self.qconf['revCardOrder'] in (REV_CARDS_OLD_FIRST, REV_CARDS_NEW_FIRST): required.append("interval") cols = ["queue", "due", "gid"] + required diff --git a/anki/sched.py b/anki/sched.py index 5bc050dfa..e579d0eef 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -98,19 +98,21 @@ class Scheduler(object): self.newCount = 0 else: self.newQueue = self.db.all(""" -select id %s from cards where -queue = 2 %s order by due limit %d""" % (self.newOrder(), self.groupLimit('new'), +select id, due from cards where +queue = 2 %s order by due, id limit %d""" % (self.groupLimit('new'), lim)) - self.newQueue.sort(key=itemgetter(1), reverse=True) + self.newQueue.reverse() self.newCount = len(self.newQueue) self.updateNewCardRatio() def getNewCard(self): if self.newQueue: - return self.newQueue.pop()[0] - - def newOrder(self): - return (",ord", "")[self.deck.qconf['newTodayOrder']] + (id, due) = self.newQueue.pop() + # move any siblings to the end? + if self.deck.qconf['newTodayOrder'] == NEW_TODAY_ORD: + while self.newQueue and self.newQueue[-1][1] == due: + self.newQueue.insert(0, self.newQueue.pop()) + return id def updateNewCardRatio(self): if self.deck.qconf['newCardSpacing'] == NEW_CARDS_DISTRIBUTE: