add support for 'allow blank answer', default to allow

This commit is contained in:
Damien Elmes 2008-12-23 13:42:22 +09:00
parent 9e47063940
commit f903288c59
2 changed files with 12 additions and 5 deletions

View file

@ -49,7 +49,7 @@ decksTable = Table(
Column('created', Float, nullable=False, default=time.time), Column('created', Float, nullable=False, default=time.time),
Column('modified', Float, nullable=False, default=time.time), Column('modified', Float, nullable=False, default=time.time),
Column('description', UnicodeText, nullable=False, default=u""), Column('description', UnicodeText, nullable=False, default=u""),
Column('version', Integer, nullable=False, default=17), Column('version', Integer, nullable=False, default=18),
Column('currentModelId', Integer, ForeignKey("models.id")), Column('currentModelId', Integer, ForeignKey("models.id")),
# syncing # syncing
Column('syncName', UnicodeText), Column('syncName', UnicodeText),
@ -799,7 +799,7 @@ and due < :now""", now=time.time())
# check we have card models available # check we have card models available
cms = self.availableCardModels(fact) cms = self.availableCardModels(fact)
if not cms: if not cms:
return [] return None
# proceed # proceed
cards = [] cards = []
self.s.save(fact) self.s.save(fact)
@ -823,7 +823,8 @@ and due < :now""", now=time.time())
for cardModel in fact.model.cardModels: for cardModel in fact.model.cardModels:
if cardModel.active or not checkActive: if cardModel.active or not checkActive:
ok = True ok = True
for format in [cardModel.qformat, cardModel.aformat]: for (type, format) in [("q", cardModel.qformat),
("a", cardModel.aformat)]:
empty = {} empty = {}
local = {}; local.update(fact) local = {}; local.update(fact)
for k in fact.keys(): for k in fact.keys():
@ -837,7 +838,7 @@ and due < :now""", now=time.time())
ok = False ok = False
except (KeyError, TypeError, ValueError): except (KeyError, TypeError, ValueError):
ok = False ok = False
if ok: if ok or type == "a" and cardModel.allowEmptyAnswer:
models.append(cardModel) models.append(cardModel)
return models return models
@ -2175,6 +2176,10 @@ where interval < 1""")
DeckStorage._addViews(deck) DeckStorage._addViews(deck)
DeckStorage._addIndices(deck) DeckStorage._addIndices(deck)
deck.version = 17 deck.version = 17
if deck.version < 18:
deck.s.statement("""
alter table cardModels add column allowEmptyAnswer integer not null default 1""")
deck.version = 18
deck.s.commit() deck.s.commit()
deck.s.statement("analyze") deck.s.statement("analyze")
return deck return deck

View file

@ -94,7 +94,9 @@ cardModelsTable = Table(
Column('editQuestionFontFamily', UnicodeText, default=None), Column('editQuestionFontFamily', UnicodeText, default=None),
Column('editQuestionFontSize', Integer, default=None), Column('editQuestionFontSize', Integer, default=None),
Column('editAnswerFontFamily', UnicodeText, default=None), Column('editAnswerFontFamily', UnicodeText, default=None),
Column('editAnswerFontSize', Integer, default=None)) Column('editAnswerFontSize', Integer, default=None),
# empty answer
Column('allowEmptyAnswer', Integer, default=True))
class CardModel(object): class CardModel(object):
"""Represents how to generate the front and back of a card.""" """Represents how to generate the front and back of a card."""