add_confirm.py
author fabien
Fri, 24 Oct 2003 14:19:30 -0400
branchxbelweb
changeset 46 d3c1de4d929e
parent 43 4d194fce51e1
child 47 2781ac85b807
permissions -rwxr-xr-x
[svn r1603] Common bookmark section.
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
43
4d194fce51e1 [svn r1594] Update to use user's preferences.
fabien
parents: 33
diff changeset
    16
from htmltmpl import TemplateManager
4d194fce51e1 [svn r1594] Update to use user's preferences.
fabien
parents: 33
diff changeset
    17
from webutils import get_template_processor
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    18
import my_db
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    19
import time
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    20
from bkmark import Bookmark
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    21
from index import load_index
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    22
from utils import unique
21
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    23
import os
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    24
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    25
def get_bk_from_form(form):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    26
	bk = Bookmark()
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    27
	bk.id = int(form['id'].value)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    28
	bk.url = form['url'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    29
	if form.has_key('name'):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    30
		bk.name = form['name'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    31
	if form.has_key('desc'):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    32
		bk.desc = form['desc'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    33
	return bk
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    34
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    35
def get_kw_from_form(form):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    36
	kw = form.getvalue("kw")
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    37
	if not isinstance(kw, type([])):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    38
		if kw:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    39
			kw = [kw]
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    40
		else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    41
			kw = []
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    42
	kw = map(int, kw)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    43
	return kw
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    44
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    45
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
    46
	if form.has_key('newkw'):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    47
		kw= map(lambda e: e.strip(),
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    48
			form['newkw'].value.split(','))
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    49
		return filter(lambda x: x != '', kw)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    50
	else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    51
		return []
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    52
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    53
def get_unique_keywords(form, db):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    54
      kw = get_kw_from_form(form)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    55
      kw = map(db.get_keyword, kw)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    56
      kw = kw + get_new_kw_from_form(form)
21
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    57
      kw = unique(kw) 
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    58
      return kw
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    59
43
4d194fce51e1 [svn r1594] Update to use user's preferences.
fabien
parents: 33
diff changeset
    60
def main(action, bk, kw, prefs):
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    61
    tmpl = TemplateManager().prepare("add_confirm.tmpl")
43
4d194fce51e1 [svn r1594] Update to use user's preferences.
fabien
parents: 33
diff changeset
    62
    tproc = get_template_processor(prefs)
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]
33
db91081e5a78 [svn r1577] Various change to the new interface.
fabien
parents: 21
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:]
43
4d194fce51e1 [svn r1594] Update to use user's preferences.
fabien
parents: 33
diff changeset
    87
	main(action, bk, kw, db.get_preferences())
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    88