show only user tags by default, provide model and card model as options

This commit is contained in:
Damien Elmes 2008-12-10 20:05:49 +09:00
parent 2d5e58ac99
commit e1aa79336c
4 changed files with 16 additions and 10 deletions

View file

@ -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 + "," +

View file

@ -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):

View file

@ -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()

View file

@ -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),