mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00
rebuild_filtered_deck() and new_filtered()
This commit is contained in:
parent
f87fa762be
commit
ade7f438ce
9 changed files with 50 additions and 46 deletions
|
@ -556,7 +556,7 @@ class DeckManager:
|
|||
# Dynamic decks
|
||||
##########################################################################
|
||||
|
||||
def newDyn(self, name: str) -> int:
|
||||
def new_filtered(self, name: str) -> int:
|
||||
"Return a new dynamic deck and set it as the current deck."
|
||||
did = self.id(name, type=1)
|
||||
self.select(did)
|
||||
|
@ -565,3 +565,7 @@ class DeckManager:
|
|||
# 1 for dyn, 0 for standard
|
||||
def isDyn(self, did: Union[int, str]) -> int:
|
||||
return self.get(did)["dyn"]
|
||||
|
||||
# legacy
|
||||
|
||||
newDyn = new_filtered
|
||||
|
|
|
@ -1070,15 +1070,6 @@ select id from cards where did in %s and queue = {QUEUE_TYPE_REV} and due <= ? l
|
|||
def empty_filtered_deck(self, deck_id: int) -> None:
|
||||
self.col.backend.empty_filtered_deck(deck_id)
|
||||
|
||||
def rebuildDyn(self, did: Optional[int] = None) -> Optional[int]:
|
||||
did = did or self.col.decks.selected()
|
||||
count = self.rebuild_filtered_deck(did) or None
|
||||
if not count:
|
||||
return None
|
||||
# and change to our new deck
|
||||
self.col.decks.select(did)
|
||||
return count
|
||||
|
||||
def _removeFromFiltered(self, card: Card) -> None:
|
||||
if card.odid:
|
||||
card.did = card.odid
|
||||
|
@ -1102,6 +1093,15 @@ select id from cards where did in %s and queue = {QUEUE_TYPE_REV} and due <= ? l
|
|||
|
||||
# legacy
|
||||
|
||||
def rebuildDyn(self, did: Optional[int] = None) -> Optional[int]:
|
||||
did = did or self.col.decks.selected()
|
||||
count = self.rebuild_filtered_deck(did) or None
|
||||
if not count:
|
||||
return None
|
||||
# and change to our new deck
|
||||
self.col.decks.select(did)
|
||||
return count
|
||||
|
||||
def emptyDyn(self, did: Optional[int], lim: Optional[str] = None) -> None:
|
||||
if lim is None:
|
||||
self.empty_filtered_deck(did)
|
||||
|
|
|
@ -84,7 +84,7 @@ def test_rename():
|
|||
for n in "yo", "yo::two", "yo::two::three":
|
||||
assert n in names
|
||||
# over filtered
|
||||
filteredId = col.decks.newDyn("filtered")
|
||||
filteredId = col.decks.new_filtered("filtered")
|
||||
filtered = col.decks.get(filteredId)
|
||||
childId = col.decks.id("child")
|
||||
child = col.decks.get(childId)
|
||||
|
|
|
@ -545,8 +545,8 @@ def test_suspend():
|
|||
# should cope with cards in cram decks
|
||||
c.due = 1
|
||||
c.flush()
|
||||
col.decks.newDyn("tmp")
|
||||
col.sched.rebuildDyn()
|
||||
did = col.decks.new_filtered("tmp")
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
c.load()
|
||||
assert c.due != 1
|
||||
assert c.did != 1
|
||||
|
@ -575,8 +575,8 @@ def test_cram():
|
|||
assert col.sched.counts() == (0, 0, 0)
|
||||
cardcopy = copy.copy(c)
|
||||
# create a dynamic deck and refresh it
|
||||
did = col.decks.newDyn("Cram")
|
||||
col.sched.rebuildDyn(did)
|
||||
did = col.decks.new_filtered("Cram")
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
# should appear as new in the deck list
|
||||
assert sorted(col.sched.deck_due_tree().children)[0].new_count == 1
|
||||
|
@ -616,7 +616,7 @@ def test_cram():
|
|||
# and it will have moved back to the previous deck
|
||||
assert c.did == 1
|
||||
# cram the deck again
|
||||
col.sched.rebuildDyn(did)
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
c = col.sched.getCard()
|
||||
# check ivls again - passing should be idempotent
|
||||
|
@ -646,8 +646,8 @@ def test_cram():
|
|||
col.reset()
|
||||
assert col.sched.counts() == (0, 0, 1)
|
||||
# cram again
|
||||
did = col.decks.newDyn("Cram")
|
||||
col.sched.rebuildDyn(did)
|
||||
did = col.decks.new_filtered("Cram")
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
assert col.sched.counts() == (0, 0, 1)
|
||||
c.load()
|
||||
|
@ -673,8 +673,8 @@ def test_cram_rem():
|
|||
note["Front"] = "one"
|
||||
col.addNote(note)
|
||||
oldDue = note.cards()[0].due
|
||||
did = col.decks.newDyn("Cram")
|
||||
col.sched.rebuildDyn(did)
|
||||
did = col.decks.new_filtered("Cram")
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
c = col.sched.getCard()
|
||||
col.sched.answerCard(c, 2)
|
||||
|
@ -695,11 +695,11 @@ def test_cram_resched():
|
|||
note["Front"] = "one"
|
||||
col.addNote(note)
|
||||
# cram deck
|
||||
did = col.decks.newDyn("Cram")
|
||||
did = col.decks.new_filtered("Cram")
|
||||
cram = col.decks.get(did)
|
||||
cram["resched"] = False
|
||||
col.decks.save(cram)
|
||||
col.sched.rebuildDyn(did)
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
# graduate should return it to new
|
||||
c = col.sched.getCard()
|
||||
|
@ -718,7 +718,7 @@ def test_cram_resched():
|
|||
c.factor = STARTING_FACTOR
|
||||
c.flush()
|
||||
cardcopy = copy.copy(c)
|
||||
col.sched.rebuildDyn(did)
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
c = col.sched.getCard()
|
||||
assert ni(c, 1) == 600
|
||||
|
@ -730,7 +730,7 @@ def test_cram_resched():
|
|||
# check failure too
|
||||
c = cardcopy
|
||||
c.flush()
|
||||
col.sched.rebuildDyn(did)
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
c = col.sched.getCard()
|
||||
col.sched.answerCard(c, 1)
|
||||
|
@ -741,7 +741,7 @@ def test_cram_resched():
|
|||
# fail+grad early
|
||||
c = cardcopy
|
||||
c.flush()
|
||||
col.sched.rebuildDyn(did)
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
c = col.sched.getCard()
|
||||
col.sched.answerCard(c, 1)
|
||||
|
@ -754,7 +754,7 @@ def test_cram_resched():
|
|||
c = cardcopy
|
||||
c.due = -25
|
||||
c.flush()
|
||||
col.sched.rebuildDyn(did)
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
c = col.sched.getCard()
|
||||
col.sched.answerCard(c, 3)
|
||||
|
@ -766,7 +766,7 @@ def test_cram_resched():
|
|||
c = cardcopy
|
||||
c.due = -25
|
||||
c.flush()
|
||||
col.sched.rebuildDyn(did)
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
c = col.sched.getCard()
|
||||
col.sched.answerCard(c, 1)
|
||||
|
@ -778,7 +778,7 @@ def test_cram_resched():
|
|||
c = cardcopy
|
||||
c.due = -25
|
||||
c.flush()
|
||||
col.sched.rebuildDyn(did)
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
c = col.sched.getCard()
|
||||
col.sched.answerCard(c, 1)
|
||||
|
@ -789,7 +789,7 @@ def test_cram_resched():
|
|||
# lapsed card pulled into cram
|
||||
# col.sched._cardConf(c)['lapse']['mult']=0.5
|
||||
# col.sched.answerCard(c, 1)
|
||||
# col.sched.rebuildDyn(did)
|
||||
# col.sched.rebuild_filtered_deck(did)
|
||||
# col.reset()
|
||||
# c = col.sched.getCard()
|
||||
# col.sched.answerCard(c, 2)
|
||||
|
|
|
@ -668,8 +668,8 @@ def test_suspend():
|
|||
# should cope with cards in cram decks
|
||||
c.due = 1
|
||||
c.flush()
|
||||
col.decks.newDyn("tmp")
|
||||
col.sched.rebuildDyn()
|
||||
did = col.decks.new_filtered("tmp")
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
c.load()
|
||||
assert c.due != 1
|
||||
assert c.did != 1
|
||||
|
@ -698,8 +698,8 @@ def test_filt_reviewing_early_normal():
|
|||
col.reset()
|
||||
assert col.sched.counts() == (0, 0, 0)
|
||||
# create a dynamic deck and refresh it
|
||||
did = col.decks.newDyn("Cram")
|
||||
col.sched.rebuildDyn(did)
|
||||
did = col.decks.new_filtered("Cram")
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
# should appear as normal in the deck list
|
||||
assert sorted(col.sched.deck_due_tree().children)[0].review_count == 1
|
||||
|
@ -727,7 +727,7 @@ def test_filt_reviewing_early_normal():
|
|||
c.ivl = 100
|
||||
c.due = col.sched.today + 75
|
||||
c.flush()
|
||||
col.sched.rebuildDyn(did)
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
c = col.sched.getCard()
|
||||
|
||||
|
@ -758,8 +758,8 @@ def test_filt_keep_lrn_state():
|
|||
assert c.type == CARD_TYPE_LRN and c.queue == QUEUE_TYPE_LRN
|
||||
|
||||
# create a dynamic deck and refresh it
|
||||
did = col.decks.newDyn("Cram")
|
||||
col.sched.rebuildDyn(did)
|
||||
did = col.decks.new_filtered("Cram")
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
|
||||
# card should still be in learning state
|
||||
|
@ -792,11 +792,11 @@ def test_preview():
|
|||
note2["Front"] = "two"
|
||||
col.addNote(note2)
|
||||
# cram deck
|
||||
did = col.decks.newDyn("Cram")
|
||||
did = col.decks.new_filtered("Cram")
|
||||
cram = col.decks.get(did)
|
||||
cram["resched"] = False
|
||||
col.decks.save(cram)
|
||||
col.sched.rebuildDyn(did)
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.reset()
|
||||
# grab the first card
|
||||
c = col.sched.getCard()
|
||||
|
@ -1253,8 +1253,8 @@ def test_negativeDueFilter():
|
|||
c.flush()
|
||||
|
||||
# into and out of filtered deck
|
||||
did = col.decks.newDyn("Cram")
|
||||
col.sched.rebuildDyn(did)
|
||||
did = col.decks.new_filtered("Cram")
|
||||
col.sched.rebuild_filtered_deck(did)
|
||||
col.sched.empty_filtered_deck(did)
|
||||
col.reset()
|
||||
|
||||
|
|
|
@ -150,7 +150,7 @@ class CustomStudy(QDialog):
|
|||
dyn = cur
|
||||
self.mw.col.decks.select(cur["id"])
|
||||
else:
|
||||
did = self.mw.col.decks.newDyn(_("Custom Study Session"))
|
||||
did = self.mw.col.decks.new_filtered(_("Custom Study Session"))
|
||||
dyn = self.mw.col.decks.get(did)
|
||||
# and then set various options
|
||||
if i == RADIO_FORGOT:
|
||||
|
@ -186,7 +186,7 @@ class CustomStudy(QDialog):
|
|||
self.mw.col.decks.save(dyn)
|
||||
# generate cards
|
||||
self.created_custom_study = True
|
||||
if not self.mw.col.sched.rebuildDyn():
|
||||
if not self.mw.col.sched.rebuild_filtered_deck(dyn["id"]):
|
||||
return showWarning(_("No cards matched the criteria you provided."))
|
||||
self.mw.moveToState("overview")
|
||||
QDialog.accept(self)
|
||||
|
|
|
@ -122,7 +122,7 @@ class DeckConf(QDialog):
|
|||
def accept(self):
|
||||
if not self.saveConf():
|
||||
return
|
||||
if not self.mw.col.sched.rebuildDyn():
|
||||
if not self.mw.col.sched.rebuild_filtered_deck(self.deck["id"]):
|
||||
if askUser(
|
||||
_(
|
||||
"""\
|
||||
|
|
|
@ -1159,7 +1159,7 @@ title="%s" %s>%s</button>""" % (
|
|||
while self.col.decks.id_for_name(_("Filtered Deck %d") % n):
|
||||
n += 1
|
||||
name = _("Filtered Deck %d") % n
|
||||
did = self.col.decks.newDyn(name)
|
||||
did = self.col.decks.new_filtered(name)
|
||||
diag = aqt.dyndeckconf.DeckConf(self, first=True, search=search)
|
||||
if not diag.ok:
|
||||
# user cancelled first config
|
||||
|
|
|
@ -76,7 +76,7 @@ class Overview:
|
|||
deck = self.mw.col.decks.current()
|
||||
self.mw.onCram("'deck:%s'" % deck["name"])
|
||||
elif url == "refresh":
|
||||
self.mw.col.sched.rebuildDyn()
|
||||
self.mw.col.sched.rebuild_filtered_deck(self.mw.col.decks.selected())
|
||||
self.mw.reset()
|
||||
elif url == "empty":
|
||||
self.mw.col.sched.empty_filtered_deck(self.mw.col.decks.selected())
|
||||
|
@ -107,7 +107,7 @@ class Overview:
|
|||
|
||||
def onRebuildKey(self):
|
||||
if self._filteredDeck():
|
||||
self.mw.col.sched.rebuildDyn()
|
||||
self.mw.col.sched.rebuild_filtered_deck(self.mw.col.decks.selected())
|
||||
self.mw.reset()
|
||||
|
||||
def onEmptyKey(self):
|
||||
|
|
Loading…
Reference in a new issue