From e1aa79336cef4c46a45696d388bfd413f6d17074 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Wed, 10 Dec 2008 20:05:49 +0900 Subject: [PATCH] show only user tags by default, provide model and card model as options --- anki/cards.py | 5 ++++- anki/deck.py | 13 +++++++------ anki/facts.py | 2 +- anki/models.py | 6 ++++-- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/anki/cards.py b/anki/cards.py index 21dc2296f..35b1cf1bf 100644 --- a/anki/cards.py +++ b/anki/cards.py @@ -87,7 +87,7 @@ class Card(object): d = {} for f in self.fact.model.fieldModels: d[f.name] = (f.id, self.fact[f.name]) - qa = formatQA(None, fact.modelId, d, self.allTags(), cardModel) + qa = formatQA(None, fact.modelId, d, self.splitTags(), cardModel) self.question = qa['question'] self.answer = qa['answer'] @@ -155,6 +155,9 @@ class Card(object): self.firstAnswered = time.time() self.setModified() + def splitTags(self): + return (self.fact.tags, self.fact.model.tags, self.cardModel.name) + def allTags(self): "Non-canonified string of all tags." return (self.fact.tags + "," + diff --git a/anki/deck.py b/anki/deck.py index 668f51f01..c7389218f 100644 --- a/anki/deck.py +++ b/anki/deck.py @@ -1198,9 +1198,10 @@ and %s in %s""" % (col, ids2str(ids))) else: mod = "" # tags - tags = dict(self.shortTagsList( + tags = dict([(x[0], x[1:]) for x in + self.splitTagsList( where="and cards.id in %s" % - ids2str([x[0] for x in ids]))) + ids2str([x[0] for x in ids]))]) facts = {} # fields for k, g in groupby(self.s.all(""" @@ -1245,12 +1246,12 @@ cardModels.name %s from cards, facts, models, cardModels where cards.factId == facts.id and facts.modelId == models.id and cards.cardModelId = cardModels.id %s""" % (priority, where)) - def shortTagsList(self, where=""): - # no card model + def splitTagsList(self, where=""): return self.s.all(""" -select cards.id, facts.tags || "," || models.tags -from cards, facts, models where +select cards.id, facts.tags, models.tags, cardModels.name +from cards, facts, models, cardModels where cards.factId == facts.id and facts.modelId == models.id +and cards.cardModelId = cardModels.id %s""" % where) def cardsWithNoTags(self): diff --git a/anki/facts.py b/anki/facts.py index 8e6d52d0c..11f7e204c 100644 --- a/anki/facts.py +++ b/anki/facts.py @@ -132,7 +132,7 @@ class Fact(object): for f in self.model.fieldModels: d[f.name] = (f.id, self[f.name]) for card in self.cards: - qa = formatQA(None, self.modelId, d, card.allTags(), card.cardModel) + qa = formatQA(None, self.modelId, d, card.splitTags(), card.cardModel) card.question = qa['question'] card.answer = qa['answer'] card.setModified() diff --git a/anki/models.py b/anki/models.py index 8cfcaf6f4..717bf93ba 100644 --- a/anki/models.py +++ b/anki/models.py @@ -118,8 +118,10 @@ def formatQA(cid, mid, fact, tags, cm): hexifyID(v[0]), v[1]) else: fields[k] = u"" - fields['tags'] = canonifyTags(tags) - fields['Tags'] = fields['tags'] + fields['tags'] = tags[0] + fields['Tags'] = tags[0] + fields['modelTags'] = tags[1] + fields['cardModel'] = tags[2] # render q & a ret = [] for (type, format) in (("question", cm.qformat),