From d6112997156a1b36be81311eebab550a83699e49 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Wed, 13 Apr 2011 03:39:01 +0900 Subject: [PATCH] make sure add/delTags() is limited to provided ids --- anki/deck.py | 3 ++- tests/test_deck.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/anki/deck.py b/anki/deck.py index 3711a21f6..aa0ccd184 100644 --- a/anki/deck.py +++ b/anki/deck.py @@ -541,7 +541,8 @@ insert or ignore into tags (mod, name) values (%d, :t)""" % intTime(), lim = " or ".join( [l+"like :_%d" % c for c, t in enumerate(newTags)]) res = self.db.all( - "select id, tags from facts where " + lim, + "select id, tags from facts where id in %s and %s" % ( + ids2str(ids), lim), **dict([("_%d" % x, '%% %s %%' % y) for x, y in enumerate(newTags)])) # update tags fids = [] diff --git a/tests/test_deck.py b/tests/test_deck.py index 68e204d7f..cf9ee9b08 100644 --- a/tests/test_deck.py +++ b/tests/test_deck.py @@ -170,3 +170,17 @@ def test_selective(): assert deck.db.scalar("select count() from cards where gid = 3") == 3 deck.setGroupForTags(["one"], [], 2) assert deck.db.scalar("select count() from cards where gid = 2") == 2 + +def test_addDelTags(): + deck = getEmptyDeck() + f = deck.newFact() + f['Front'] = u"1" + deck.addFact(f) + f2 = deck.newFact() + f2['Front'] = u"2" + deck.addFact(f2) + # adding for a given id + deck.addTags([f.id], "foo") + f.load(); f2.load() + assert "foo" in f.tags + assert "foo" not in f2.tags