diff -r 31271426f879 -r 004a32370ba5 lib/actions/editkw.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/actions/editkw.py Sun Dec 28 12:24:02 2008 -0500
@@ -0,0 +1,94 @@
+from keywords import get_keywords
+from webutils import load_index
+from templates import Template
+
+def print_kw(keywords, prefs):
+ tmpl = Template("edit_kw.tmpl", prefs, "", "")
+ tmpl.set('Keywords', keywords)
+ print tmpl.process()
+
+def print_confirm(step, sel_keywords, keywords, prefs):
+ if step == 'delete':
+ tmpl = Template("kw_delete.tmpl", prefs)
+ elif step == 'merge':
+ tmpl = Template("kw_merge.tmpl", prefs)
+ elif step == 'rename':
+ tmpl = Template("kw_rename.tmpl", prefs)
+ tmpl.set("Selected", sel_keywords)
+ tmpl.set("Keywords", keywords)
+ print tmpl.process()
+
+def list_kw(db, prefs):
+ kw = db.get_all_keywords()[1:]
+ kw = map(lambda elem: {
+ 'id' : elem[0],
+ 'keyword' : elem[1] }, kw)
+ kw.sort(lambda l,r: cmp(l['keyword'],r['keyword']))
+ print_kw(kw, prefs)
+
+def confirm_kw(step, db, prefs, form):
+ ids = get_keywords(form, 'kw')
+ keywords = map(lambda e: { 'id': e[0], 'keyword': e[1]},
+ db.get_all_keywords()[1:])
+ keywords.sort(lambda x, y: cmp(x['keyword'],y['keyword']))
+ sel_keywords = filter(lambda e: e['id'] in ids, keywords)
+ keywords = filter(lambda e: e['id'] not in ids, keywords)
+ print_confirm(step, sel_keywords, keywords, prefs)
+
+def do_merge(db, prefs, form):
+ fromids = get_keywords(form, 'id')
+ toids = get_keywords(form, 'kw')
+ remove_them = form.has_key('remove')
+ if remove_them:
+ lastid = toids.pop()
+ status = "result"
+ status_msg = []
+ for id in fromids:
+ fromkw = db.get_keyword(id)
+ for dest in toids:
+ tokw = db.get_keyword(dest)
+ status_msg.append("Adding '%s' into '%s'." % (fromkw, tokw))
+ db.add_keywords(id, dest)
+ if remove_them:
+ tokw = db.get_keyword(lastid)
+ status_msg.append("Merging '%s' into '%s'." % (fromkw, tokw))
+ db.merge_keywords(id, lastid)
+ load_index(db, prefs, form, status, "
".join(status_msg))
+
+def do_rename(db, prefs, form):
+ ids = get_keywords(form, 'id')
+ status = "result"
+ status_msg = []
+ for id in ids:
+ oldname = db.get_keyword(id)
+ newname = form['name%d' % id].value
+ status_msg.append("Renaming '%s' into '%s'." % (oldname, newname))
+ db.update_keyword(id, newname)
+ load_index(db, prefs, form, status, "
".join(status_msg))
+
+def do_delete(db, prefs, form):
+ ids = get_keywords(form, 'id')
+ status = "result"
+ status_msg = []
+ for id in ids:
+ kw = db.get_keyword(id)
+ status_msg.append("Removing '%s'." % kw)
+ db.remove_keyword(id)
+ load_index(db, prefs, form, status, "
".join(status_msg))
+
+def do_it(action, db, prefs, form):
+ step = 'list'
+ if form.has_key('step'):
+ step = form['step'].value
+ if step == 'list':
+ list_kw(db, prefs)
+ elif step == 'cancel':
+ load_index(db, prefs, form, "err", "Operation cancel")
+ elif step == 'do_delete':
+ do_delete(db, prefs, form)
+ elif step == 'do_merge':
+ do_merge(db, prefs, form)
+ elif step == 'do_rename':
+ do_rename(db, prefs, form)
+ else:
+ confirm_kw(step, db, prefs, form)