add_confirm.py
author fabien
Fri, 26 Sep 2003 11:04:15 -0400
branchxbelweb
changeset 17 14bec94bbe89
child 21 345ee7421989
permissions -rwxr-xr-x
[svn r1551] Add delete bookmarks functionality as well as many reusability issues.
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
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    22
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    23
def get_bk_from_form(form):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    24
	bk = Bookmark()
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    25
	bk.id = int(form['id'].value)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    26
	bk.url = form['url'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    27
	if form.has_key('name'):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    28
		bk.name = form['name'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    29
	if form.has_key('desc'):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    30
		bk.desc = form['desc'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    31
	return bk
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    32
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    33
def get_kw_from_form(form):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    34
	kw = form.getvalue("kw")
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    35
	if not isinstance(kw, type([])):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    36
		if kw:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    37
			kw = [kw]
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    38
		else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    39
			kw = []
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    40
	kw = map(int, kw)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    41
	return kw
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    42
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    43
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
    44
	if form.has_key('newkw'):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    45
		kw= map(lambda e: e.strip(),
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    46
			form['newkw'].value.split(','))
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    47
		return filter(lambda x: x != '', kw)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    48
	else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    49
		return []
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    50
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    51
def get_unique_keywords(form, db):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    52
      kw = get_kw_from_form(form)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    53
      kw = map(db.get_keyword, kw)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    54
      kw = kw + get_new_kw_from_form(form)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    55
      return unique(kw)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    56
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    57
def main(action, bk, kw):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    58
    tmpl = TemplateManager().prepare("add_confirm.tmpl")
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    59
    tproc = TemplateProcessor()
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    60
    tproc.set("confirm_delete", action == 'delete')
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    61
    tproc.set("confirm_update", action == 'update')
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    62
    tproc.set("action", action)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    63
    tproc.set("id", bk.id)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    64
    tproc.set("name", bk.name)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    65
    tproc.set("url", bk.url)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    66
    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
    67
    print tproc.process(tmpl)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    68
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    69
if (__name__ == "__main__"):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    70
    form = cgi.FieldStorage()
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    71
    db = my_db.connect()
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    72
    id = int(form['id'].value)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    73
    action = form['action'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    74
    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
    75
        load_index(db)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    76
    else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    77
	if action == 'update':
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    78
	  bk = get_bk_from_form(form)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    79
	  kw = get_unique_keywords(form, db)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    80
	else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    81
	  bk = db.get_bookmarks([id])[0]
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    82
	  (ids, kw) = apply(zip,db.get_keywords(id))
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    83
	main(action, bk, kw[1:])
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    84