add_result.py
author fabien
Fri, 26 Sep 2003 18:18:33 -0400
branchxbelweb
changeset 21 345ee7421989
parent 17 14bec94bbe89
child 33 db91081e5a78
permissions -rwxr-xr-x
[svn r1555] Add multiuser support and more templating.

#!/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 htmltmpl import TemplateManager, TemplateProcessor
import time
from utils import unique
import my_db
from add_confirm import get_bk_from_form, get_new_kw_from_form
from index import load_index
import os

def add_new_keywords(db, newkw):
    kw = [0] # Default keyword, so that every bookmarks appears in
             # the bookmarks_keywords db.
    (ids, kws) = map(list,apply(zip, db.get_all_keywords()))
    for elem in unique(newkw):
    	if elem in kws:
		kw.append(ids[kws.index(elem)])
	else:
		id = db.add_keyword(elem)
		kw.append(id)
    return kw

def main(bk, kw):
    tmpl = TemplateManager().prepare("add_result.tmpl")
    tproc = TemplateProcessor()
    tproc.set("pagetitle", os.environ["REMOTE_USER"]+"'s XBELWeb Result")
    tproc.set("url", bk.url)
    tproc.set("name", bk.name)
    tproc.set("added", bk.added)
    tproc.set("desc", bk.desc)
    tproc.set("Keywords", kw)
    print tproc.process(tmpl)

if (__name__ == "__main__"):
    form = cgi.FieldStorage()
    db = my_db.connect(os.environ["REMOTE_USER"])
    action = form['action'].value
    if action == 'cancel':
      load_index(db)
    elif action == 'delete':
      db.remove_bookmark(int(form['id'].value))
      load_index(db)
    else:
      bk = get_bk_from_form(form)
      newkw = get_new_kw_from_form(form)
      kw = add_new_keywords(db, newkw)
      if bk.id == -1:
	id = db.add_bookmark(bk)
      else:
	db.update_bookmark(bk)
	id = bk.id
      db.update_keywords(id, kw)
      kw = map(lambda e: { 'keyword': e[1] }, db.get_keywords(id)[1:])
      main(bk, kw)