diff -r c078d8a04d76 -r 6784c4350b41 lib/actions/bookmark.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/actions/bookmark.py Wed Dec 31 15:41:32 2008 -0500 @@ -0,0 +1,114 @@ +from templates import Template +from bkmark import Bookmark +from webutils import load_index +from templates import Template +from keywords import add_unique_keywords +import os + +def get_bk_from_form(form): + bk = Bookmark() + bk.id = int(form['id'].value) + bk.url = form['url'].value + if form.has_key('name'): + bk.name = form['name'].value + if form.has_key('desc'): + bk.desc = form['desc'].value + return bk + +def get_kw_from_form(form): + kw = form.getvalue("kw") + if not isinstance(kw, type([])): + if kw: + kw = [kw] + else: + kw = [] + kw = map(int, kw) + return kw + +def get_new_kw_from_form(form, sep =','): + if form.has_key('newkw'): + kw= map(lambda e: e.strip(), + form['newkw'].value.split(',')) + return filter(lambda x: x != '', kw) + else: + return [] + +def get_unique_keywords(form, db): + kw = get_kw_from_form(form) + kw = set(map(db.get_keyword, kw)) + return list(kw.union(get_new_kw_from_form(form))) + +def edit(db, prefs, form, id): + name = url = "" + if form.has_key("ctitle"): + name = form["ctitle"].value + if form.has_key("curl"): + url = form["curl"].value + kw = db.get_all_keywords()[1:] + kw.sort(lambda l,r: cmp(l[1],r[1])) + kw = map(lambda elem: { + 'id' : elem[0], + 'keyword' : elem[1], + 'checked' : 0 }, kw) + print_edit(id, kw, name, url, prefs) + +def confirm(step, bk, kw, prefs): + tmpl = Template("add_confirm.tmpl", prefs) + confirmation = "Unknown!" + if (step == 'delete'): + confirmation = "Delete" + elif (step == 'update'): + confirmation = "Update" + tmpl.set("confirmation", confirmation) + tmpl.set("step", step) + tmpl.set("id", bk.id) + tmpl.set("name", bk.name) + tmpl.set("url", bk.url) + tmpl.set("Keywords", map(lambda x: {'keyword': x }, kw)) + tmpl.set("desc", bk.desc) + print tmpl.process() + +def print_edit(id, keywords, title, url, prefs): + tmpl = Template("add_bk.tmpl", prefs) + tmpl.set('ctitle', title) + tmpl.set('curl', url) + tmpl.set('desc', '') + tmpl.set('bkid', id) + tmpl.set('Keywords', keywords) + print tmpl.process() + +def update_bookmark(db, form): + bk = get_bk_from_form(form) + id = bk.id + if (bk.id == -1): + id = db.add_bookmark(bk) + else: + db.update_bookmark(bk) + kw = add_unique_keywords(db, get_unique_keywords(form, db)) + db.update_keywords(id, kw.values()) + +def do_it(action, db, prefs, form): + if form.has_key('id'): + id = int(form['id'].value) + else: + id = -1; + if form.has_key('step'): + step = form['step'].value + else: + step = 'edit' + if step == 'edit': + edit(db, prefs, form, id) + elif step == 'confirm': + update_bookmark(db, form) + load_index(db, prefs, form, "result", "Bookmark update") + elif step == 'cancel' or (action == 'delete' and id == -1): + load_index(db, prefs, form, "err", "Operation cancel") + else: + if step == 'update': + bk = get_bk_from_form(form) + kw = get_unique_keywords(form, db) + else: + bk = db.get_bookmarks([id])[0] + (ids, kw) = apply(zip,db.get_keywords([id])) + kw = kw[1:] + confirm(step, bk, kw, prefs)