First change to use a common entry point.
--- a/.htaccess Mon Aug 23 23:31:38 2004 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-AddHandler cgi-script py
-Options +ExecCGI
-DirectoryIndex index.py
-AuthType Basic
-AuthName Fabien@TZoNE
-AuthUserFile /home/fabien/public_html/xbelweb/.htpasswd
-<Limit GET POST>
- require valid-user
-</Limit>
--- a/add.py Mon Aug 23 23:31:38 2004 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-#!/usr/bin/python
-
-import sys
-import traceback
-sys.path.insert(0, "/home/fabien/lib/python")
-sys.path.insert(0, "./lib")
-sys.stderr = sys.stdout
-
-print "Content-type: text/html; charset=iso-8859-1;"
-print
-
-# import cgitb; cgitb.enable()
-import cgi
-from templates import Template
-import my_db
-import time
-from bkmark import Bookmark
-import os
-
-def main(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()
-
-if (__name__ == "__main__"):
- form = cgi.FieldStorage()
- name = url = ""
- if form.has_key("ctitle"):
- name = form["ctitle"].value
- if form.has_key("curl"):
- url = form["curl"].value
- db = my_db.connect(os.environ["REMOTE_USER"])
- 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)
- main(kw, name, url, db.get_preferences())
--- a/add_bk.tmpl Mon Aug 23 23:31:38 2004 -0400
+++ b/add_bk.tmpl Sat Dec 27 20:23:39 2008 -0500
@@ -2,7 +2,8 @@
<TMPL_INCLUDE NAME="headers.tmpl">
<body>
<h1><TMPL_VAR remote_user>'s Edit Bookmark</h1>
- <form action="add_confirm.py" method="post" name="add">
+ <form action="?action=add" method="post" name="add">
+ <input type="hidden" name="action" value="add"/>
<fieldset class="bookmark">
<input type="hidden" name="id" value="<TMPL_VAR bkid>"/>
<label>Nom: <input type="text" name="name"
@@ -26,9 +27,9 @@
separated list)</label><br/>
<button type="reset">Reset</button>
</fieldset>
- <button type="submit" name="action" value="update">Submit</button>
- <button type="submit" name="action" value="delete">Delete</button>
- <button type="submit" name="action" value="cancel">Cancel</button>
+ <button type="submit" name="step" value="update">Submit</button>
+ <button type="submit" name="step" value="delete">Delete</button>
+ <button type="submit" name="step" value="cancel">Cancel</button>
</form>
</body>
</html>
--- a/add_confirm.py Mon Aug 23 23:31:38 2004 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-#!/usr/bin/python
-
-import sys
-import traceback
-
-if __name__ == "__main__":
- sys.path.insert(0, "/home/fabien/lib/python")
- sys.path.insert(0, "./lib")
- sys.stderr = sys.stdout
-
- print "Content-type: text/html; charset=iso-8859-1;"
- print
-
-# import cgitb; cgitb.enable()
-import cgi
-import my_db
-import time
-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 main(action, bk, kw, prefs):
- tmpl = Template("add_confirm.tmpl", prefs)
- tmpl.set("confirm_delete", action == 'delete')
- tmpl.set("confirm_update", action == 'update')
- tmpl.set("action", action)
- tmpl.set("id", bk.id)
- tmpl.set("name", bk.name)
- tmpl.set("url", bk.url)
- tmpl.set("Keywords", map(lambda x: {'keyword': x }, kw))
- print tmpl.process()
-
-if (__name__ == "__main__"):
- form = cgi.FieldStorage()
- db = my_db.connect(os.environ["REMOTE_USER"])
- prefs = db.get_preferences()
- id = int(form['id'].value)
- action = form['action'].value
- if action == 'cancel' or (action == 'delete' and id == -1):
- load_index(db, prefs)
- else:
- if action == '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:]
- main(action, bk, kw, prefs)
-
--- a/add_confirm.tmpl Mon Aug 23 23:31:38 2004 -0400
+++ b/add_confirm.tmpl Sat Dec 27 20:23:39 2008 -0500
@@ -3,12 +3,14 @@
<TMPL_INCLUDE NAME="headers.tmpl">
<body>
<h1><TMPL_VAR remote_user>'s Confirmation</h1>
- <form name="confirmation" method="post" action="add_result.py">
+ <form name="confirmation" method="post" action="?action=add">
<fieldset>
<legend>Bookmark</legend>
+ <input type="hidden" name="action" value="add"/>
<input type="hidden" name="id" value="<TMPL_VAR id>"/>
<input type="hidden" name="name" value="<TMPL_VAR name>"/>
<input type="hidden" name="url" value="<TMPL_VAR url>"/>
+ <input type="hidden" name="desc" value="<TMPL_VAR desc>"/>
<input type="hidden" name="newkw"
value="<TMPL_LOOP Keywords><TMPL_VAR keyword>,</TMPL_LOOP>"/>
<strong><a href="<TMPL_VAR url>"><TMPL_VAR name></a></strong>
@@ -18,15 +20,8 @@
<TMPL_VAR keyword>;
</TMPL_LOOP>
</p>
- <TMPL_IF confirm_delete>
- <button name="action" type="submit"
- value="<TMPL_VAR action>">Delete</button>
- </TMPL_IF>
- <TMPL_IF confirm_update>
- <button name="action" type="submit"
- value="<TMPL_VAR action>">Update</button>
- </TMPL_IF>
- <button name="action" type="submit" value="cancel">Cancel</button>
+ <button name="step" type="submit" value="confirm"><TMPL_VAR confirmation></button>
+ <button name="step" type="submit" value="cancel">Cancel</button>
</form>
</body>
</html>
--- a/do_import.py Mon Aug 23 23:31:38 2004 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#!/usr/bin/python
-
-import sys
-import traceback
-sys.path.insert(0, "/home/fabien/lib/python")
-sys.path.insert(0, "./lib")
-sys.stderr = sys.stdout
-
-print "Content-type: text/html; charset=iso-8859-1;"
-print
-
-# import cgitb; cgitb.enable()
-import cgi
-import time
-from utils import unique
-import my_db
-from webutils import load_index
-import os
-from xbelimp import parse_xbel, import_bookmarks
-
-if (__name__ == "__main__"):
- form = cgi.FieldStorage()
- db = my_db.connect(os.environ["REMOTE_USER"])
- prefs = db.get_preferences()
- file = form["xbelfile"].file
- bms = parse_xbel(file)
- import_bookmarks(db, bms)
- load_index(db, prefs)
--- a/dynamic.tmpl Mon Aug 23 23:31:38 2004 -0400
+++ b/dynamic.tmpl Sat Dec 27 20:23:39 2008 -0500
@@ -4,8 +4,7 @@
<body>
<h1><TMPL_VAR remote_user>'s XBelWeb</h1>
<p>Total bookmarks: <TMPL_VAR total></p>
- <form action="index.py" method="get" name="keywords">
- <input type="hidden" name="view" value="dynamic"/>
+ <form action="?action=index&view=dynamic" method="get" name="keywords">
<fieldset class="keywords">
<legend>Keywords:</legend>
<p>
@@ -35,7 +34,7 @@
</form>
<TMPL_INCLUDE NAME="bkmarks.tmpl">
<hr/>
- <a href="?view=folder">Switch to folder view</a>
+ <a href="?action=index&view=folder">Switch to folder view</a>
<TMPL_INCLUDE NAME="footers.tmpl">
</body>
</html>
--- a/edit.py Mon Aug 23 23:31:38 2004 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-#!/usr/bin/python
-
-import sys
-import traceback
-sys.path.insert(0, "/home/fabien/lib/python")
-sys.path.insert(0, "./lib")
-sys.stderr = sys.stdout
-
-print "Content-type: text/html; charset=iso-8859-1;"
-print
-
-# import cgitb; cgitb.enable()
-import cgi
-from templates import Template
-import my_db
-import time
-from bkmark import Bookmark
-import os
-
-def main(keywords, bk, prefs):
- tmpl = Template("add_bk.tmpl", prefs)
- tmpl.set('ctitle', bk.name)
- tmpl.set('curl', bk.url)
- tmpl.set('desc', bk.desc)
- tmpl.set('bkid', bk.id)
- tmpl.set('Keywords', keywords)
- print tmpl.process()
-
-if (__name__ == "__main__"):
- form = cgi.FieldStorage()
- id = int(form["id"].value)
- db = my_db.connect(os.environ["REMOTE_USER"])
- bk = db.get_bookmarks([id])[0]
- kw = db.get_all_keywords()[1:]
- kw.sort(lambda l,r: cmp(l[1],r[1]))
- (ids, kws) = apply(zip,db.get_keywords([id]))
- kw = map(lambda elem: {
- 'id' : elem[0],
- 'keyword' : elem[1],
- 'selected' : elem[0] in ids }, kw)
- main(kw, bk, db.get_preferences())
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/edit_bk.tmpl Sat Dec 27 20:23:39 2008 -0500
@@ -0,0 +1,38 @@
+<html>
+ <TMPL_INCLUDE NAME="headers.tmpl">
+ <body>
+ <h1><TMPL_VAR remote_user>'s Edit Bookmark</h1>
+ <form action="?action=bookmark" method="post" name="edit">
+ <fieldset class="bookmark">
+ <input type="hidden" name="action" value="bookmark"/>
+ <input type="hidden" name="id" value="<TMPL_VAR bkid>"/>
+ <label>Nom: <input type="text" name="name"
+ value="<TMPL_VAR ctitle>"/></label><br/>
+ <label>URL: <input type="text" name="url"
+ value="<TMPL_VAR curl>"/></label><br/>
+ <label for="desc">Description: </label><br/>
+ <textarea name="desc" rows="5" cols="40"><TMPL_VAR desc></textarea>
+ </fieldset>
+ <fieldset class="keywords">
+ <legend>Keywords:</legend>
+ <label>Selected:
+ <select multiple name="kw" size="<TMPL_VAR kw_size>">
+ <TMPL_LOOP Keywords>
+ <option value="<TMPL_VAR id>"
+ <TMPL_IF selected>selected</TMPL_IF> />
+ <TMPL_VAR keyword></option>
+ </TMPL_LOOP>
+ </select>
+ <label>New keywords: <input type="text" name="newkw"> (comma
+ separated list)</label><br/>
+ <button type="reset">Reset</button>
+ </fieldset>
+ <button type="submit" name="step" value="update">Submit</button>
+ <button type="submit" name="step" value="delete">Delete</button>
+ <button type="submit" name="step" value="cancel">Cancel</button>
+ </form>
+ </body>
+</html>
+<!--
+vi: syntax=html
+-->
--- a/folders.tmpl Mon Aug 23 23:31:38 2004 -0400
+++ b/folders.tmpl Sat Dec 27 20:23:39 2008 -0500
@@ -7,7 +7,7 @@
<p>Parents:
<TMPL_LOOP Parents>
<TMPL_IF id> : </TMPL_IF>
- <a href="?view=folder;folder=<TMPL_VAR id>"><TMPL_IF id><TMPL_VAR name>
+ <a href="?action=index&view=folder&folder=<TMPL_VAR id>"><TMPL_IF id><TMPL_VAR name>
<TMPL_ELSE>Top </TMPL_IF> (<TMPL_VAR count>)</a>
</TMPL_LOOP>
</p>
@@ -15,20 +15,20 @@
<h2><TMPL_IF folder><TMPL_VAR name><TMPL_ELSE>Main Folder</TMPL_IF>
(<TMPL_VAR subtotal>/<TMPL_VAR total>)</h2>
<DIV class="subfolders">
- <form action="index.py?view=folder;folder=<TMPL_VAR folder>" method="post" name="edit_folders">
+ <form action="?action=index&view=folder&folder=<TMPL_VAR folder>" method="post" name="edit_folders">
<input type="hidden" name="folder" value="<TMPL_VAR folder>"/>
<input type="hidden" name="view" value="folder"/>
<input type="hidden" name="action" value="delete"/>
<ul>
<TMPL_LOOP Subfolders>
<li><button name="delete" value="<TMPL_VAR id>">Delete</button>
- <a href="index.py?view=folder;folder=<TMPL_VAR id>"><TMPL_VAR name>
+ <a href="?action=index&view=folder&folder=<TMPL_VAR id>"><TMPL_VAR name>
(<TMPL_VAR count>)</a></li>
</TMPL_LOOP>
</ul>
</form>
</div>
- <form action="index.py?view=folder;folder=<TMPL_VAR folder>" method="post" name="add_folder">
+ <form action="?action=index&view=folder&folder=<TMPL_VAR folder>" method="post" name="add_folder">
<label>Add subfolder with keyword:
<input type="hidden" name="folder" value="<TMPL_VAR folder>"/>
<input type="hidden" name="view" value="folder"/>
@@ -42,7 +42,7 @@
<hr>
<TMPL_INCLUDE NAME="bkmarks.tmpl">
<hr>
- <a href="?view=dynamic">Switch to dynamic view</a>
+ <a href="?action=index&view=dynamic">Switch to dynamic view</a>
<TMPL_INCLUDE NAME="footers.tmpl">
</body>
</html>
--- a/import.py Mon Aug 23 23:31:38 2004 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#!/usr/bin/python
-
-import sys
-import traceback
-sys.path.insert(0, "/home/fabien/lib/python")
-sys.path.insert(0, "./lib")
-sys.stderr = sys.stdout
-
-print "Content-type: text/html; charset=iso-8859-1;"
-print
-
-# import cgitb; cgitb.enable()
-import cgi
-from templates import Template
-from os import environ
-
-def main():
- db = my_db.connect(environ["REMOTE_USER"])
- tmpl = Template("import.tmpl", db.get_preferences())
- print tmpl.process()
-
-if (__name__ == "__main__"):
- main()
--- a/import.tmpl Mon Aug 23 23:31:38 2004 -0400
+++ b/import.tmpl Sat Dec 27 20:23:39 2008 -0500
@@ -3,12 +3,14 @@
<TMPL_INCLUDE NAME="headers.tmpl">
<body>
<h1><TMPL_VAR remote_user>'s Import XBel File</h1>
- <form enctype="multipart/form-data" action="do_import.py" name="import" method="post">
+ <form enctype="multipart/form-data" action="index.py" name="import" method="post">
+ <input type="hidden" name="action" value="import"/>
+ <input type="hidden" name="step" value="upload"/>
<label>XBEL file to import: <input type="file" name="xbelfile"/>
<button name="upload">Upload</button>
</form>
<hr>
- <p>Retour à la <a href="index.py">page principale</a></p>
+ <p>Retour à la <a href="?action=index">page principale</a></p>
</body>
</html>
<!-- Keep this comment at the end of the file
--- a/inc/bkmarks.tmpl Mon Aug 23 23:31:38 2004 -0400
+++ b/inc/bkmarks.tmpl Sat Dec 27 20:23:39 2008 -0500
@@ -2,7 +2,7 @@
<TMPL_LOOP Bookmarks>
<dt>
<a href="<TMPL_VAR url>"><TMPL_VAR name></a>
- <a href="edit.py?id=<TMPL_VAR id>">edit</a>
+ <a href="?action=edit&id=<TMPL_VAR id>">edit</a>
</dt>
<dd><p><TMPL_VAR desc></p></dd>
</TMPL_LOOP>
--- a/inc/footers.tmpl Mon Aug 23 23:31:38 2004 -0400
+++ b/inc/footers.tmpl Sat Dec 27 20:23:39 2008 -0500
@@ -1,7 +1,7 @@
- <p><a href="add.py">Add new bookmark</a>.<br/>
- <a href="import.py">Import a XBEL file</a>.<br/>
- <a href="edit_kw.py">Edit keywords</a>.<br/>
- <a href="prefs.py">Edit User Preferences</a>.</p>
+ <p><a href="?action=bookmark">Add new bookmark</a>.<br/>
+ <a href="?action=xbel">Import a XBEL file</a>.<br/>
+ <a href="?action=keywords">Edit keywords</a>.<br/>
+ <a href="?action=prefs">Edit User Preferences</a>.</p>
<p>Here the <a
href="javascript:bk1='<TMPL_VAR curl>?curl='+escape(location.href)+'&ctitle='+escape(document.title);bkwin=window.open(bk1,'bkqm','width=620,height=500,scrollbars=1,resizable=1');bkwin.focus();">Quick
Mark Link</a>. Put it on your bookmarks (using <tt><Right-Mouse
--- a/inc/headers.tmpl Mon Aug 23 23:31:38 2004 -0400
+++ b/inc/headers.tmpl Sat Dec 27 20:23:39 2008 -0500
@@ -2,5 +2,4 @@
<title><TMPL_VAR remote_user>'s XBelWeb</title>
<meta name="generator" content="XBelWeb"/>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"
- <link rel="home" href="index.py" title="XBelWeb's Main Page"/>
</head>
--- a/index.py Mon Aug 23 23:31:38 2004 -0400
+++ b/index.py Sat Dec 27 20:23:39 2008 -0500
@@ -10,14 +10,25 @@
print "Content-type: text/html; charset=iso-8859-1;"
print
-# import cgitb; cgitb.enable()
+import cgitb; cgitb.enable()
import cgi
import my_db
from os import environ
-from webutils import load_index
+from actions import actions;
if (__name__ == "__main__"):
form = cgi.FieldStorage()
+ if form.has_key('debug'):
+ sys.stderr = sys.stdout
+ print "<pre>"
db = my_db.connect(environ["REMOTE_USER"])
prefs = db.get_preferences()
- load_index(db, prefs, form)
+ if form.has_key('action'):
+ action = form['action'].value
+ else:
+ action = 'default'
+ if action in actions.keys():
+ actions[action](action, db, prefs, form)
+ else:
+ actions['default']('default', db, prefs, form)
+ print "</pre>"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/actions.py Sat Dec 27 20:23:39 2008 -0500
@@ -0,0 +1,32 @@
+import imp
+import sys
+import os
+
+
+class ActionsLoader:
+ def __init__(self):
+ self._actions = {}
+ def keys(self):
+ return self._actions.keys()
+ def _getmodule(self, name):
+ modpath = os.path.join(os.path.dirname(__file__), 'actions')
+ fp, pathname, description = imp.find_module(name, [modpath])
+ try:
+ return imp.load_module(name, fp, pathname, description)
+ finally:
+ if fp:
+ fp.close()
+ def __getitem__(self, item):
+ mname, fname = self._actions[item]
+ return self._getmodule(mname).__dict__[fname]
+ def __setitem__(self, key, value):
+ self._actions[key] = value
+
+
+actions = ActionsLoader()
+actions['default'] = ('index', 'do_it')
+actions['index'] = ('index', 'do_it')
+actions['edit'] = ('edit', 'do_it')
+actions['import'] = ('imp_xbel', 'do_it')
+actions['add'] = ('add', 'do_it')
+actions['confirm'] = ('add', 'do_it')
--- /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)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/actions/edit.py Sat Dec 27 20:23:39 2008 -0500
@@ -0,0 +1,24 @@
+#!/usr/bin/python
+
+from templates import Template
+
+def main(keywords, bk, prefs):
+ tmpl = Template("add_bk.tmpl", prefs)
+ tmpl.set('ctitle', bk.name)
+ tmpl.set('curl', bk.url)
+ tmpl.set('desc', bk.desc)
+ tmpl.set('bkid', bk.id)
+ tmpl.set('Keywords', keywords)
+ print tmpl.process()
+
+def do_it(action, db, prefs, form):
+ id = int(form["id"].value)
+ bk = db.get_bookmarks([id])[0]
+ kw = db.get_all_keywords()[1:]
+ kw.sort(lambda l,r: cmp(l[1],r[1]))
+ (ids, kws) = apply(zip,db.get_keywords([id]))
+ kw = map(lambda elem: {
+ 'id' : elem[0],
+ 'keyword' : elem[1],
+ 'selected' : elem[0] in ids }, kw)
+ main(kw, bk, prefs)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/actions/imp_xbel.py Sat Dec 27 20:23:39 2008 -0500
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+
+from templates import Template
+from webutils import load_index
+from xbelimp import parse_xbel, import_bookmarks
+
+def upload(db, prefs, form):
+ file = form["xbelfile"].file
+ bms = parse_xbel(file)
+ import_bookmarks(db, bms)
+ load_index(db, prefs)
+
+def prepare(db, prefs, form = None):
+ tmpl = Template("import.tmpl", prefs)
+ print tmpl.process()
+
+def do_it(db, prefs, form):
+ if form.has_value('step'):
+ step = form['step'].value
+ else:
+ step = 'prepare'
+ if step = 'upload':
+ upload(db, prefs, form)
+ else:
+ prepare(db, prefs, form);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/actions/index.py Sat Dec 27 20:23:39 2008 -0500
@@ -0,0 +1,4 @@
+from webutils import load_index
+
+def do_it(action, db, prefs, form):
+ load_index(db, prefs, form)
--- a/lib/my_db.py Mon Aug 23 23:31:38 2004 -0400
+++ b/lib/my_db.py Sat Dec 27 20:23:39 2008 -0500
@@ -74,10 +74,13 @@
WHERE u.id = %d AND p.userid = u.id;
""" % (self.userid,))
res = self.crs.fetchone()
+ rev_kw = 0
+ if (res[2]):
+ rev_kw = 1
return {
'keywords_box' : res[0],
'keywords_sort' : res[1],
- 'keywords_reverse': res[2],
+ 'keywords_reverse': rev_kw,
'fullname': res[3],
'default_view': res[4]
}