author | fabien |
Sat, 27 Sep 2003 01:32:50 -0400 | |
branch | xbelweb |
changeset 24 | f3a926c13ce0 |
parent 21 | 345ee7421989 |
child 33 | db91081e5a78 |
permissions | -rwxr-xr-x |
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 |
|
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 |