# HG changeset patch # User fabien@tzone.org # Date 1230704527 18000 # Node ID 591ffdca80418bcdc8701ff83c370ef0fe14ceb9 # Parent 1798859f7f6cd959717d3108a324d7eafb7738bd Add keywords.add_unique_keywords function. diff -r 1798859f7f6c -r 591ffdca8041 lib/keywords.py --- a/lib/keywords.py Wed Dec 31 01:00:21 2008 -0500 +++ b/lib/keywords.py Wed Dec 31 01:22:07 2008 -0500 @@ -47,3 +47,10 @@ _sk_sort = pref['keywords_sort'] kw.sort(lambda l, r: _sk_rev_fact*cmp(l[_sk_sort], r[_sk_sort])) return kw + +def add_unique_keywords(db, kws): + res = kwmap = db.map_keywords(kws) + for kw, id in kwmap.iteritems(): + if id == -1: + res[kw] = db.add_keyword(kw) + return res diff -r 1798859f7f6c -r 591ffdca8041 tests/lib/test_keywords.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/lib/test_keywords.py Wed Dec 31 01:22:07 2008 -0500 @@ -0,0 +1,33 @@ +import testconfig +import unittest +import keywords +import my_db + +class TestKeywords(unittest.TestCase): + def setUp(self): + " Setup a test-db environment." + self.db = my_db.connect(testconfig.CONFIG, "test") + + def tearDown(self): + " Tear down the test-db environment" + self.db.delete_user(self.db.userid) + + def _get_all_kw(self): + res = self.db.get_all_keywords()[1:] + res = map(lambda x: x[1], res) + res.sort() + return res + def testAddUniqueKeywords(self): + kws1 = ['a1','a2', 'a3'] + kws2 = ['a1', 'b1','b2', 'b3'] + all_kw = list(set(kws1+kws2)) + all_kw.sort() + kws1.sort() + kws2.sort() + keywords.add_unique_keywords(self.db, kws1) + self.assertEqual(kws1, self._get_all_kw()) + keywords.add_unique_keywords(self.db, kws2) + self.assertEqual(all_kw, self._get_all_kw()) + +if __name__ == '__main__': + unittest.main()