mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 23:42:23 -04:00
fact.model -> fact.model()
This commit is contained in:
parent
870c80e076
commit
f96a495b53
4 changed files with 22 additions and 20 deletions
11
anki/deck.py
11
anki/deck.py
|
@ -229,14 +229,15 @@ select id from facts where id not in (select distinct fid from cards)""")
|
||||||
def findTemplates(self, fact, checkActive=True):
|
def findTemplates(self, fact, checkActive=True):
|
||||||
"Return (active), non-empty templates."
|
"Return (active), non-empty templates."
|
||||||
ok = []
|
ok = []
|
||||||
for template in fact.model.templates:
|
model = fact.model()
|
||||||
|
for template in model.templates:
|
||||||
if template['actv'] or not checkActive:
|
if template['actv'] or not checkActive:
|
||||||
# [cid, fid, mid, gid, ord, tags, flds, data]
|
# [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(), ""]
|
"", fact.joinedFields(), ""]
|
||||||
now = self._renderQA(fact.model, "", data)
|
now = self._renderQA(model, "", data)
|
||||||
data[6] = "\x1f".join([""]*len(fact._fields))
|
data[6] = "\x1f".join([""]*len(fact._fields))
|
||||||
empty = self._renderQA(fact.model, "", data)
|
empty = self._renderQA(model, "", data)
|
||||||
if now['q'] == empty['q']:
|
if now['q'] == empty['q']:
|
||||||
continue
|
continue
|
||||||
if not template['emptyAns']:
|
if not template['emptyAns']:
|
||||||
|
@ -277,7 +278,7 @@ select id from facts where id not in (select distinct fid from cards)""")
|
||||||
elif type == 1:
|
elif type == 1:
|
||||||
cms = [c.template() for c in fact.cards()]
|
cms = [c.template() for c in fact.cards()]
|
||||||
else:
|
else:
|
||||||
cms = fact.model.templates
|
cms = fact.model().templates
|
||||||
if not cms:
|
if not cms:
|
||||||
return []
|
return []
|
||||||
cards = []
|
cards = []
|
||||||
|
|
|
@ -17,14 +17,14 @@ class Fact(object):
|
||||||
self.load()
|
self.load()
|
||||||
else:
|
else:
|
||||||
self.id = None
|
self.id = None
|
||||||
self.model = model
|
self._model = model
|
||||||
self.mid = model.id
|
self.mid = model.id
|
||||||
self.crt = intTime()
|
self.crt = intTime()
|
||||||
self.mod = self.crt
|
self.mod = self.crt
|
||||||
self.tags = ""
|
self.tags = ""
|
||||||
self._fields = [""] * len(self.model.fields)
|
self._fields = [""] * len(self._model.fields)
|
||||||
self.data = ""
|
self.data = ""
|
||||||
self._fmap = self.model.fieldMap()
|
self._fmap = self._model.fieldMap()
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
(self.mid,
|
(self.mid,
|
||||||
|
@ -35,12 +35,12 @@ class Fact(object):
|
||||||
self.data) = self.deck.db.first("""
|
self.data) = self.deck.db.first("""
|
||||||
select mid, crt, mod, tags, flds, data from facts where id = ?""", self.id)
|
select mid, crt, mod, tags, flds, data from facts where id = ?""", self.id)
|
||||||
self._fields = splitFields(self._fields)
|
self._fields = splitFields(self._fields)
|
||||||
self.model = self.deck.getModel(self.mid)
|
self._model = self.deck.getModel(self.mid)
|
||||||
|
|
||||||
def flush(self):
|
def flush(self):
|
||||||
self.mod = intTime()
|
self.mod = intTime()
|
||||||
# facts table
|
# facts table
|
||||||
sfld = self._fields[self.model.sortIdx()]
|
sfld = self._fields[self._model.sortIdx()]
|
||||||
res = self.deck.db.execute("""
|
res = self.deck.db.execute("""
|
||||||
insert or replace into facts values (?, ?, ?, ?, ?, ?, ?, ?)""",
|
insert or replace into facts values (?, ?, ?, ?, ?, ?, ?, ?)""",
|
||||||
self.id, self.mid, self.crt,
|
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)]
|
"select id from cards where fid = ? order by id", self.id)]
|
||||||
|
|
||||||
def model(self):
|
def model(self):
|
||||||
return self.deck.getModel(self.mid)
|
return self._model
|
||||||
|
|
||||||
# Dict interface
|
# Dict interface
|
||||||
##################################################
|
##################################################
|
||||||
|
|
|
@ -9,7 +9,7 @@ def test_genCards():
|
||||||
f['Front'] = u'1'
|
f['Front'] = u'1'
|
||||||
f['Back'] = u'2'
|
f['Back'] = u'2'
|
||||||
deck.addFact(f)
|
deck.addFact(f)
|
||||||
cards = deck.genCards(f, f.model.templates, 1)
|
cards = deck.genCards(f, f.model().templates, 1)
|
||||||
assert len(cards) == 1
|
assert len(cards) == 1
|
||||||
assert cards[0].ord == 1
|
assert cards[0].ord == 1
|
||||||
assert deck.cardCount() == 2
|
assert deck.cardCount() == 2
|
||||||
|
@ -20,7 +20,7 @@ def test_genCards():
|
||||||
f['Front'] = u'1'
|
f['Front'] = u'1'
|
||||||
f['Back'] = u'2'
|
f['Back'] = u'2'
|
||||||
deck.addFact(f)
|
deck.addFact(f)
|
||||||
cards = deck.genCards(f, f.model.templates, 1)
|
cards = deck.genCards(f, f.model().templates, 1)
|
||||||
assert deck.cardCount() == 4
|
assert deck.cardCount() == 4
|
||||||
c = deck.db.list("select due from cards where fid = ?", f.id)
|
c = deck.db.list("select due from cards where fid = ?", f.id)
|
||||||
assert c[0] == c[1]
|
assert c[0] == c[1]
|
||||||
|
|
|
@ -51,7 +51,7 @@ def test_factAddDelete():
|
||||||
# try with two cards
|
# try with two cards
|
||||||
f = deck.newFact()
|
f = deck.newFact()
|
||||||
f['Front'] = u"one"; f['Back'] = u"two"
|
f['Front'] = u"one"; f['Back'] = u"two"
|
||||||
m = f.model
|
m = f.model()
|
||||||
m.templates[1]['actv'] = True
|
m.templates[1]['actv'] = True
|
||||||
m.flush()
|
m.flush()
|
||||||
n = deck.addFact(f)
|
n = deck.addFact(f)
|
||||||
|
@ -64,7 +64,7 @@ def test_factAddDelete():
|
||||||
assert not p
|
assert not p
|
||||||
# now let's make a duplicate and test uniqueness
|
# now let's make a duplicate and test uniqueness
|
||||||
f2 = deck.newFact()
|
f2 = deck.newFact()
|
||||||
f2.model.fields[1]['req'] = True
|
f2.model().fields[1]['req'] = True
|
||||||
f2['Front'] = u"one"; f2['Back'] = u""
|
f2['Front'] = u"one"; f2['Back'] = u""
|
||||||
p = f2.problems()
|
p = f2.problems()
|
||||||
assert p[0] == "unique"
|
assert p[0] == "unique"
|
||||||
|
@ -100,15 +100,16 @@ def test_fieldChecksum():
|
||||||
assert deck.db.scalar(
|
assert deck.db.scalar(
|
||||||
"select csum from fsums") == int("4b0e5a4c", 16)
|
"select csum from fsums") == int("4b0e5a4c", 16)
|
||||||
# turning off unique and modifying the fact should delete the sum
|
# turning off unique and modifying the fact should delete the sum
|
||||||
f.model.fields[0]['uniq'] = False
|
m = f.model()
|
||||||
f.model.flush()
|
m.fields[0]['uniq'] = False
|
||||||
|
m.flush()
|
||||||
f.flush()
|
f.flush()
|
||||||
assert deck.db.scalar(
|
assert deck.db.scalar(
|
||||||
"select count() from fsums") == 0
|
"select count() from fsums") == 0
|
||||||
# and turning on both should ensure two checksums generated
|
# and turning on both should ensure two checksums generated
|
||||||
f.model.fields[0]['uniq'] = True
|
m.fields[0]['uniq'] = True
|
||||||
f.model.fields[1]['uniq'] = True
|
m.fields[1]['uniq'] = True
|
||||||
f.model.flush()
|
m.flush()
|
||||||
f.flush()
|
f.flush()
|
||||||
assert deck.db.scalar(
|
assert deck.db.scalar(
|
||||||
"select count() from fsums") == 2
|
"select count() from fsums") == 2
|
||||||
|
|
Loading…
Reference in a new issue