add_confirm.py
author fabien
Wed, 08 Oct 2003 17:51:09 -0400
branchxbelweb
changeset 40 b62ebedcb8ac
parent 33 db91081e5a78
child 43 4d194fce51e1
permissions -rwxr-xr-x
[svn r1584] Headers correction.

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