Add keywords.add_unique_keywords function.
--- 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
--- /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()