lib/actions/add.py
changeset 57 31271426f879
child 58 004a32370ba5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/actions/add.py	Sat Dec 27 20:23:39 2008 -0500
@@ -0,0 +1,108 @@
+from templates import Template
+from bkmark import Bookmark
+from webutils import load_index
+from templates import Template
+from utils import unique
+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 = map(db.get_keyword, kw)
+      kw = kw + get_new_kw_from_form(form)
+      kw = unique(kw) 
+      return kw
+
+def edit(db, prefs, form):
+    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(keywords, title, 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(keywords, title, url, prefs):
+    tmpl = Template("add_bk.tmpl", prefs)
+    tmpl.set('ctitle', title)
+    tmpl.set('curl', url)
+    tmpl.set('desc', '')
+    tmpl.set('bkid', -1)
+    tmpl.set('Keywords', keywords)
+    print tmpl.process()
+
+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':
+		bk = get_bk_from_form(form)
+		kw = get_unique_keywords(form, db)
+		db.update_bookmark(bk)
+                load_index(db, prefs)
+        elif step == 'cancel' or (action == 'delete' and id == -1):
+                load_index(db, prefs)
+        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)