add_confirm.py
author fabien
Thu, 30 Oct 2003 03:24:25 -0500
branchxbelweb
changeset 54 f74bad856bce
parent 47 2781ac85b807
permissions -rwxr-xr-x
[svn r1611] Optimization of db.get_bookmarks_count which was call too often.

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