#!/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
from htmltmpl import TemplateManager, TemplateProcessor
import my_db
import time
from bkmark import Bookmark
from index import load_index
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):
tmpl = TemplateManager().prepare("add_confirm.tmpl")
tproc = TemplateProcessor()
tproc.set("pagetitle", os.environ["REMOTE_USER"]+"'s XBELWeb Confirmation")
tproc.set("confirm_delete", action == 'delete')
tproc.set("confirm_update", action == 'update')
tproc.set("action", action)
tproc.set("id", bk.id)
tproc.set("name", bk.name)
tproc.set("url", bk.url)
tproc.set("Keywords", map(lambda x: {'keyword': x }, kw))
print tproc.process(tmpl)
if (__name__ == "__main__"):
form = cgi.FieldStorage()
db = my_db.connect(os.environ["REMOTE_USER"])
id = int(form['id'].value)
action = form['action'].value
if action == 'cancel' or (action == 'delete' and id == -1):
load_index(db)
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)