From f96a495b535b85cda6592e32dc8512376482fb10 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sun, 13 Mar 2011 18:37:21 +0900 Subject: [PATCH] fact.model -> fact.model() --- anki/deck.py | 11 ++++++----- anki/facts.py | 12 ++++++------ tests/test_cards.py | 4 ++-- tests/test_deck.py | 15 ++++++++------- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/anki/deck.py b/anki/deck.py index 3b3990841..e87b2bf5e 100644 --- a/anki/deck.py +++ b/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): "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 = [] diff --git a/anki/facts.py b/anki/facts.py index 2e719980d..757b44355 100644 --- a/anki/facts.py +++ b/anki/facts.py @@ -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 ################################################## diff --git a/tests/test_cards.py b/tests/test_cards.py index 8fd239f5a..f5c8b1b5c 100644 --- a/tests/test_cards.py +++ b/tests/test_cards.py @@ -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] diff --git a/tests/test_deck.py b/tests/test_deck.py index 0d45bf754..4520f4199 100644 --- a/tests/test_deck.py +++ b/tests/test_deck.py @@ -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