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)