From df0e4d2446e1b7ac3958251af2101cce0c28ba30 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Thu, 21 May 2009 02:11:33 +0900 Subject: [PATCH] ensure tags are synced properly in one way sync --- anki/sync.py | 4 ++++ tests/test_sync.py | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/anki/sync.py b/anki/sync.py index e3d52a244..28cfdff35 100644 --- a/anki/sync.py +++ b/anki/sync.py @@ -844,6 +844,10 @@ and cards.id in %s""" % ids2str([c[0] for c in cards]))) self.deck.s.flush() self.deck.updateCardQACache( [(c[0], c[2], c[1], models[c[0]]) for c in cards]) + # rebuild priorities on client + cardIds = [c[0] for c in cards] + self.deck.updateCardTags(cardIds) + self.rebuildPriorities(cardIds) # Tools ########################################################################## diff --git a/tests/test_sync.py b/tests/test_sync.py index f91ec04d2..a9dfbfc36 100644 --- a/tests/test_sync.py +++ b/tests/test_sync.py @@ -35,13 +35,13 @@ def setup_local(loadDecks=None): deck1.currentModel.cardModels[1].active = True deck1.newCardOrder = 1 f = deck1.newFact() - f['Front'] = u"foo"; f['Back'] = u"bar" + f['Front'] = u"foo"; f['Back'] = u"bar"; f.tags = u"foo" deck1.addFact(f) deck2 = DeckStorage.Deck() deck2.addModel(BasicModel()) deck2.currentModel.cardModels[1].active = True f = deck2.newFact() - f['Front'] = u"baz"; f['Back'] = u"qux" + f['Front'] = u"baz"; f['Back'] = u"qux"; f.tags = u"bar" deck2.addFact(f) deck2.newCardOrder = 1 client = SyncClient(deck1) @@ -256,10 +256,18 @@ def test_localsync_media(): def test_oneway_simple(): assert deck1.s.scalar("select count(1) from cards") == 2 assert deck2.s.scalar("select count(1) from cards") == 2 + assert deck1.cardCount == 2 + assert deck2.cardCount == 2 + assert deck1.s.scalar("select id from tags where tag = 'foo'") + assert not deck1.s.scalar("select id from tags where tag = 'bar'") server.deckName = "dummy" client.syncOneWay(0) assert deck1.s.scalar("select count(1) from cards") == 4 assert deck2.s.scalar("select count(1) from cards") == 2 + assert deck1.cardCount == 4 + assert deck2.cardCount == 2 + assert deck1.s.scalar("select id from tags where tag = 'foo'") + assert deck1.s.scalar("select id from tags where tag = 'bar'") # should be a noop client.syncOneWay(0)