add_confirm.py
author fabien
Fri, 24 Oct 2003 17:04:29 -0400
branchxbelweb
changeset 47 2781ac85b807
parent 43 4d194fce51e1
permissions -rwxr-xr-x
[svn r1604] Implement default_view preferences, which move things around a lot.
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
import my_db
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    17
import time
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    18
from bkmark import Bookmark
47
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    19
from webutils import load_index
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    20
from templates import Template
17
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
43
4d194fce51e1 [svn r1594] Update to use user's preferences.
fabien
parents: 33
diff changeset
    59
def main(action, bk, kw, prefs):
47
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    60
    tmpl = Template("add_confirm.tmpl", prefs)
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    61
    tmpl.set("confirm_delete", action == 'delete')
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    62
    tmpl.set("confirm_update", action == 'update')
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    63
    tmpl.set("action", action)
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    64
    tmpl.set("id", bk.id)
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    65
    tmpl.set("name", bk.name)
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    66
    tmpl.set("url", bk.url)
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    67
    tmpl.set("Keywords", map(lambda x: {'keyword': x }, kw))
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    68
    print tmpl.process()
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    69
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    70
if (__name__ == "__main__"):
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    71
    form = cgi.FieldStorage()
21
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    72
    db = my_db.connect(os.environ["REMOTE_USER"])
47
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    73
    prefs = db.get_preferences()
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    74
    id = int(form['id'].value)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    75
    action = form['action'].value
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    76
    if action == 'cancel' or (action == 'delete' and id == -1):
47
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    77
        load_index(db, prefs)
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    78
    else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    79
	if action == 'update':
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    80
	  bk = get_bk_from_form(form)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    81
	  kw = get_unique_keywords(form, db)
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    82
	else:
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    83
	  bk = db.get_bookmarks([id])[0]
33
db91081e5a78 [svn r1577] Various change to the new interface.
fabien
parents: 21
diff changeset
    84
	  (ids, kw) = apply(zip,db.get_keywords([id]))
21
345ee7421989 [svn r1555] Add multiuser support and more templating.
fabien
parents: 17
diff changeset
    85
	  kw = kw[1:]
47
2781ac85b807 [svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents: 43
diff changeset
    86
	main(action, bk, kw, prefs)
17
14bec94bbe89 [svn r1551] Add delete bookmarks functionality as well as many reusability issues.
fabien
parents:
diff changeset
    87