lib/actions/editkw.py
author Fabien Niñoles <fabien@tzone.org>
Wed, 07 Jan 2009 17:26:18 -0500
changeset 77 52b13b0616b8
parent 74 6784c4350b41
permissions -rw-r--r--
Correct quicklink template with the right parameters.

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)