add_confirm.py
author fabien
Tue, 07 Oct 2003 00:05:59 -0400
branchxbelweb
changeset 31 cee64de4e7e0
parent 21 345ee7421989
child 33 db91081e5a78
permissions -rwxr-xr-x
[svn r1575] Move index.py generic functions into a separate library.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
     1
#!/usr/bin/python
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
     2
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
     3
import sys
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
     4
import traceback
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
     5
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
     6
if __name__ == "__main__":
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
     7
	sys.path.insert(0, "/home/fabien/lib/python")
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
     8
	sys.path.insert(0, "./lib")
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
     9
	sys.stderr = sys.stdout
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    10
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    11
	print "Content-type: text/html; charset=iso-8859-1;"
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    12
	print
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    13
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    14
# import cgitb; cgitb.enable()
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    15
import cgi
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    16
from htmltmpl import TemplateManager, TemplateProcessor
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    17
import my_db
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    18
import time
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    19
from bkmark import Bookmark
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    20
from index import load_index
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    21
from utils import unique
21
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    22
import os
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    23
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    24
def get_bk_from_form(form):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    25
	bk = Bookmark()
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    26
	bk.id = int(form['id'].value)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    27
	bk.url = form['url'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    28
	if form.has_key('name'):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    29
		bk.name = form['name'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    30
	if form.has_key('desc'):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    31
		bk.desc = form['desc'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    32
	return bk
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    33
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    34
def get_kw_from_form(form):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    35
	kw = form.getvalue("kw")
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    36
	if not isinstance(kw, type([])):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    37
		if kw:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    38
			kw = [kw]
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    39
		else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    40
			kw = []
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    41
	kw = map(int, kw)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    42
	return kw
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    43
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    44
def get_new_kw_from_form(form, sep =','):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    45
	if form.has_key('newkw'):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    46
		kw= map(lambda e: e.strip(),
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    47
			form['newkw'].value.split(','))
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    48
		return filter(lambda x: x != '', kw)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    49
	else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    50
		return []
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    51
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    52
def get_unique_keywords(form, db):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    53
      kw = get_kw_from_form(form)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    54
      kw = map(db.get_keyword, kw)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    55
      kw = kw + get_new_kw_from_form(form)
21
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    56
      kw = unique(kw) 
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    57
      return kw
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    58
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    59
def main(action, bk, kw):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    60
    tmpl = TemplateManager().prepare("add_confirm.tmpl")
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    61
    tproc = TemplateProcessor()
21
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    62
    tproc.set("pagetitle", os.environ["REMOTE_USER"]+"'s XBELWeb Confirmation")
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    63
    tproc.set("confirm_delete", action == 'delete')
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    64
    tproc.set("confirm_update", action == 'update')
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    65
    tproc.set("action", action)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    66
    tproc.set("id", bk.id)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    67
    tproc.set("name", bk.name)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    68
    tproc.set("url", bk.url)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    69
    tproc.set("Keywords", map(lambda x: {'keyword': x }, kw))
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    70
    print tproc.process(tmpl)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    71
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    72
if (__name__ == "__main__"):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    73
    form = cgi.FieldStorage()
21
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    74
    db = my_db.connect(os.environ["REMOTE_USER"])
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    75
    id = int(form['id'].value)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    76
    action = form['action'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    77
    if action == 'cancel' or (action == 'delete' and id == -1):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    78
        load_index(db)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    79
    else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    80
	if action == 'update':
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    81
	  bk = get_bk_from_form(form)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    82
	  kw = get_unique_keywords(form, db)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    83
	else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    84
	  bk = db.get_bookmarks([id])[0]
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    85
	  (ids, kw) = apply(zip,db.get_keywords(id))
21
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    86
	  kw = kw[1:]
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    87
	main(action, bk, kw)
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    88