fact.model -> fact.model()

This commit is contained in:
Damien Elmes 2011-03-13 18:37:21 +09:00
parent 870c80e076
commit f96a495b53
4 changed files with 22 additions and 20 deletions

View file

@ -229,14 +229,15 @@ select id from facts where id not in (select distinct fid from cards)""")
def findTemplates(self, fact, checkActive=True):
"Return (active), non-empty templates."
ok = []
for template in fact.model.templates:
model = fact.model()
for template in model.templates:
if template['actv'] or not checkActive:
# [cid, fid, mid, gid, ord, tags, flds, data]
data = [1, 1, fact.model.id, 1, template['ord'],
data = [1, 1, model.id, 1, template['ord'],
"", fact.joinedFields(), ""]
now = self._renderQA(fact.model, "", data)
now = self._renderQA(model, "", data)
data[6] = "\x1f".join([""]*len(fact._fields))
empty = self._renderQA(fact.model, "", data)
empty = self._renderQA(model, "", data)
if now['q'] == empty['q']:
continue
if not template['emptyAns']:
@ -277,7 +278,7 @@ select id from facts where id not in (select distinct fid from cards)""")
elif type == 1:
cms = [c.template() for c in fact.cards()]
else:
cms = fact.model.templates
cms = fact.model().templates
if not cms:
return []
cards = []

View file

@ -17,14 +17,14 @@ class Fact(object):
self.load()
else:
self.id = None
self.model = model
self._model = model
self.mid = model.id
self.crt = intTime()
self.mod = self.crt
self.tags = ""
self._fields = [""] * len(self.model.fields)
self._fields = [""] * len(self._model.fields)
self.data = ""
self._fmap = self.model.fieldMap()
self._fmap = self._model.fieldMap()
def load(self):
(self.mid,
@ -35,12 +35,12 @@ class Fact(object):
self.data) = self.deck.db.first("""
select mid, crt, mod, tags, flds, data from facts where id = ?""", self.id)
self._fields = splitFields(self._fields)
self.model = self.deck.getModel(self.mid)
self._model = self.deck.getModel(self.mid)
def flush(self):
self.mod = intTime()
# facts table
sfld = self._fields[self.model.sortIdx()]
sfld = self._fields[self._model.sortIdx()]
res = self.deck.db.execute("""
insert or replace into facts values (?, ?, ?, ?, ?, ?, ?, ?)""",
self.id, self.mid, self.crt,
@ -70,7 +70,7 @@ insert or replace into facts values (?, ?, ?, ?, ?, ?, ?, ?)""",
"select id from cards where fid = ? order by id", self.id)]
def model(self):
return self.deck.getModel(self.mid)
return self._model
# Dict interface
##################################################

View file

@ -9,7 +9,7 @@ def test_genCards():
f['Front'] = u'1'
f['Back'] = u'2'
deck.addFact(f)
cards = deck.genCards(f, f.model.templates, 1)
cards = deck.genCards(f, f.model().templates, 1)
assert len(cards) == 1
assert cards[0].ord == 1
assert deck.cardCount() == 2
@ -20,7 +20,7 @@ def test_genCards():
f['Front'] = u'1'
f['Back'] = u'2'
deck.addFact(f)
cards = deck.genCards(f, f.model.templates, 1)
cards = deck.genCards(f, f.model().templates, 1)
assert deck.cardCount() == 4
c = deck.db.list("select due from cards where fid = ?", f.id)
assert c[0] == c[1]

View file

@ -51,7 +51,7 @@ def test_factAddDelete():
# try with two cards
f = deck.newFact()
f['Front'] = u"one"; f['Back'] = u"two"
m = f.model
m = f.model()
m.templates[1]['actv'] = True
m.flush()
n = deck.addFact(f)
@ -64,7 +64,7 @@ def test_factAddDelete():
assert not p
# now let's make a duplicate and test uniqueness
f2 = deck.newFact()
f2.model.fields[1]['req'] = True
f2.model().fields[1]['req'] = True
f2['Front'] = u"one"; f2['Back'] = u""
p = f2.problems()
assert p[0] == "unique"
@ -100,15 +100,16 @@ def test_fieldChecksum():
assert deck.db.scalar(
"select csum from fsums") == int("4b0e5a4c", 16)
# turning off unique and modifying the fact should delete the sum
f.model.fields[0]['uniq'] = False
f.model.flush()
m = f.model()
m.fields[0]['uniq'] = False
m.flush()
f.flush()
assert deck.db.scalar(
"select count() from fsums") == 0
# and turning on both should ensure two checksums generated
f.model.fields[0]['uniq'] = True
f.model.fields[1]['uniq'] = True
f.model.flush()
m.fields[0]['uniq'] = True
m.fields[1]['uniq'] = True
m.flush()
f.flush()
assert deck.db.scalar(
"select count() from fsums") == 2