lib/actions/editkw.py
changeset 58 004a32370ba5
parent 47 2781ac85b807
child 74 6784c4350b41
--- /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, "<br/>".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, "<br/>".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, "<br/>".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)