diff options
| author | Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com> | 2009-06-29 17:05:53 +0200 |
|---|---|---|
| committer | Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com> | 2009-06-29 17:05:53 +0200 |
| commit | faa9d767c1dda0050f8e1b81d967919b09f0ec3a (patch) | |
| tree | 36ca3dda23c51de26a27bf40f2f51307e12cbc06 | |
| parent | 5df0d2ed5de45fd85be689632123028368be6904 (diff) | |
| download | zeitgeist-faa9d767c1dda0050f8e1b81d967919b09f0ec3a.tar.gz | |
Add tag filtering in find_events and write a test case for it.
| -rwxr-xr-x | test/engine-engine-test.py | 9 | ||||
| -rw-r--r-- | zeitgeist/engine/engine.py | 5 |
2 files changed, 13 insertions, 1 deletions
diff --git a/test/engine-engine-test.py b/test/engine-engine-test.py index ebfc58f1..1c393ec9 100755 --- a/test/engine-engine-test.py +++ b/test/engine-engine-test.py @@ -350,6 +350,15 @@ class ZeitgeistEngineTest (unittest.TestCase): [{"mimetypes": [u"image/jpg"], "bookmarked": False}]) self.assertEquals(len([x for x in result]), 1) + def testFindEventsWithTags(self): + self._init_with_various_events() + result1 = [x[1] for x in self.engine.find_events(0, 0, 0, True, False, + [{"tags": [u"files"]}])] + result2 = [x[1] for x in self.engine.find_events(0, 0, 0, True, False, + [{"tags": [u"files", u"examples"]}])] + self.assertEquals(result1, result2) + self.assertEquals(result1, [u"file:///tmp/files/example.png"]) + def testGetTagsNameFilter(self): self._init_with_various_events() result = self.engine.get_tags(u"f%") diff --git a/zeitgeist/engine/engine.py b/zeitgeist/engine/engine.py index f697606f..1a9a673d 100644 --- a/zeitgeist/engine/engine.py +++ b/zeitgeist/engine/engine.py @@ -323,7 +323,10 @@ class ZeitgeistEngine(gobject.GObject): filterset += [ "uri.value LIKE ? ESCAPE \"\\\"" ] additional_args += [ filter["text_uri"] ] if "tags" in filter: - pass # tags... + for tag in filter["tags"]: + filterset += [ "(tags == \"%s\" OR tags LIKE \"%s, %%\" OR " + "tags LIKE \"%%, %s, %%\" OR tags LIKE \"%%, %s\")" \ + % (tag, tag, tag, tag) ] if "mimetypes" in filter: condition = ' OR '.join( ['mimetype LIKE ? ESCAPE "\\"'] * len(filter["mimetypes"])) |
