mirror of
https://github.com/ankitects/anki.git
synced 2025-11-09 14:17:13 -05:00
conditional card generation
This commit is contained in:
parent
2a3f653d0e
commit
225e31f470
1 changed files with 30 additions and 7 deletions
29
anki/deck.py
29
anki/deck.py
|
|
@ -745,13 +745,17 @@ priority != 0 and due < :now and spaceUntil > :now""",
|
|||
# validate
|
||||
fact.assertValid()
|
||||
fact.assertUnique(self.s)
|
||||
# and associated cards
|
||||
# check we have card models available
|
||||
cms = self.availableCardModels(fact)
|
||||
print cms
|
||||
if not cms:
|
||||
return []
|
||||
# proceed
|
||||
n = 0
|
||||
cards = []
|
||||
self.s.save(fact)
|
||||
self.flushMod()
|
||||
for cardModel in fact.model.cardModels:
|
||||
if cardModel.active:
|
||||
for cardModel in cms:
|
||||
card = anki.cards.Card(fact, cardModel)
|
||||
self.flushMod()
|
||||
self.updatePriority(card)
|
||||
|
|
@ -762,6 +766,25 @@ priority != 0 and due < :now and spaceUntil > :now""",
|
|||
self._countsDirty = True
|
||||
return cards
|
||||
|
||||
def availableCardModels(self, fact):
|
||||
"List of active card models that aren't empty for FACT."
|
||||
models = []
|
||||
for cardModel in fact.model.cardModels:
|
||||
if cardModel.active:
|
||||
ok = True
|
||||
for format in [cardModel.qformat, cardModel.aformat]:
|
||||
empty = {}
|
||||
for k in fact.keys():
|
||||
empty[k] = u""
|
||||
try:
|
||||
if format % fact == format % empty:
|
||||
ok = False
|
||||
except (KeyError, TypeError, ValueError):
|
||||
ok = False
|
||||
if ok:
|
||||
models.append(cardModel)
|
||||
return models
|
||||
|
||||
def addMissingCards(self, fact):
|
||||
"Caller must flush first, flushMod after, and rebuild priorities."
|
||||
for cardModel in fact.model.cardModels:
|
||||
|
|
|
|||
Loading…
Reference in a new issue