1 #!/usr/bin/python |
|
2 |
|
3 import sys |
|
4 import traceback |
|
5 |
|
6 if __name__ == "__main__": |
|
7 sys.path.insert(0, "/home/fabien/lib/python") |
|
8 sys.path.insert(0, "./lib") |
|
9 sys.stderr = sys.stdout |
|
10 |
|
11 print "Content-type: text/html; charset=iso-8859-1;" |
|
12 print |
|
13 |
|
14 # import cgitb; cgitb.enable() |
|
15 import cgi |
|
16 import my_db |
|
17 import time |
|
18 from bkmark import Bookmark |
|
19 from webutils import load_index |
|
20 from templates import Template |
|
21 from utils import unique |
|
22 import os |
|
23 |
|
24 def get_bk_from_form(form): |
|
25 bk = Bookmark() |
|
26 bk.id = int(form['id'].value) |
|
27 bk.url = form['url'].value |
|
28 if form.has_key('name'): |
|
29 bk.name = form['name'].value |
|
30 if form.has_key('desc'): |
|
31 bk.desc = form['desc'].value |
|
32 return bk |
|
33 |
|
34 def get_kw_from_form(form): |
|
35 kw = form.getvalue("kw") |
|
36 if not isinstance(kw, type([])): |
|
37 if kw: |
|
38 kw = [kw] |
|
39 else: |
|
40 kw = [] |
|
41 kw = map(int, kw) |
|
42 return kw |
|
43 |
|
44 def get_new_kw_from_form(form, sep =','): |
|
45 if form.has_key('newkw'): |
|
46 kw= map(lambda e: e.strip(), |
|
47 form['newkw'].value.split(',')) |
|
48 return filter(lambda x: x != '', kw) |
|
49 else: |
|
50 return [] |
|
51 |
|
52 def get_unique_keywords(form, db): |
|
53 kw = get_kw_from_form(form) |
|
54 kw = map(db.get_keyword, kw) |
|
55 kw = kw + get_new_kw_from_form(form) |
|
56 kw = unique(kw) |
|
57 return kw |
|
58 |
|
59 def main(action, bk, kw, prefs): |
|
60 tmpl = Template("add_confirm.tmpl", prefs) |
|
61 tmpl.set("confirm_delete", action == 'delete') |
|
62 tmpl.set("confirm_update", action == 'update') |
|
63 tmpl.set("action", action) |
|
64 tmpl.set("id", bk.id) |
|
65 tmpl.set("name", bk.name) |
|
66 tmpl.set("url", bk.url) |
|
67 tmpl.set("Keywords", map(lambda x: {'keyword': x }, kw)) |
|
68 print tmpl.process() |
|
69 |
|
70 if (__name__ == "__main__"): |
|
71 form = cgi.FieldStorage() |
|
72 db = my_db.connect(os.environ["REMOTE_USER"]) |
|
73 prefs = db.get_preferences() |
|
74 id = int(form['id'].value) |
|
75 action = form['action'].value |
|
76 if action == 'cancel' or (action == 'delete' and id == -1): |
|
77 load_index(db, prefs) |
|
78 else: |
|
79 if action == 'update': |
|
80 bk = get_bk_from_form(form) |
|
81 kw = get_unique_keywords(form, db) |
|
82 else: |
|
83 bk = db.get_bookmarks([id])[0] |
|
84 (ids, kw) = apply(zip,db.get_keywords([id])) |
|
85 kw = kw[1:] |
|
86 main(action, bk, kw, prefs) |
|
87 |
|