--- /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)