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