make sure add/delTags() is limited to provided ids

This commit is contained in:
Damien Elmes 2011-04-13 03:39:01 +09:00
parent 96d3a25c9a
commit d611299715
2 changed files with 16 additions and 1 deletions

View file

@ -541,7 +541,8 @@ insert or ignore into tags (mod, name) values (%d, :t)""" % intTime(),
lim = " or ".join( lim = " or ".join(
[l+"like :_%d" % c for c, t in enumerate(newTags)]) [l+"like :_%d" % c for c, t in enumerate(newTags)])
res = self.db.all( 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)])) **dict([("_%d" % x, '%% %s %%' % y) for x, y in enumerate(newTags)]))
# update tags # update tags
fids = [] fids = []

View file

@ -170,3 +170,17 @@ def test_selective():
assert deck.db.scalar("select count() from cards where gid = 3") == 3 assert deck.db.scalar("select count() from cards where gid = 3") == 3
deck.setGroupForTags(["one"], [], 2) deck.setGroupForTags(["one"], [], 2)
assert deck.db.scalar("select count() from cards where gid = 2") == 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