|
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 from htmltmpl import TemplateManager, TemplateProcessor |
|
17 import my_db |
|
18 import time |
|
19 from bkmark import Bookmark |
|
20 from index import load_index |
|
21 from utils import unique |
|
22 |
|
23 def get_bk_from_form(form): |
|
24 bk = Bookmark() |
|
25 bk.id = int(form['id'].value) |
|
26 bk.url = form['url'].value |
|
27 if form.has_key('name'): |
|
28 bk.name = form['name'].value |
|
29 if form.has_key('desc'): |
|
30 bk.desc = form['desc'].value |
|
31 return bk |
|
32 |
|
33 def get_kw_from_form(form): |
|
34 kw = form.getvalue("kw") |
|
35 if not isinstance(kw, type([])): |
|
36 if kw: |
|
37 kw = [kw] |
|
38 else: |
|
39 kw = [] |
|
40 kw = map(int, kw) |
|
41 return kw |
|
42 |
|
43 def get_new_kw_from_form(form, sep =','): |
|
44 if form.has_key('newkw'): |
|
45 kw= map(lambda e: e.strip(), |
|
46 form['newkw'].value.split(',')) |
|
47 return filter(lambda x: x != '', kw) |
|
48 else: |
|
49 return [] |
|
50 |
|
51 def get_unique_keywords(form, db): |
|
52 kw = get_kw_from_form(form) |
|
53 kw = map(db.get_keyword, kw) |
|
54 kw = kw + get_new_kw_from_form(form) |
|
55 return unique(kw) |
|
56 |
|
57 def main(action, bk, kw): |
|
58 tmpl = TemplateManager().prepare("add_confirm.tmpl") |
|
59 tproc = TemplateProcessor() |
|
60 tproc.set("confirm_delete", action == 'delete') |
|
61 tproc.set("confirm_update", action == 'update') |
|
62 tproc.set("action", action) |
|
63 tproc.set("id", bk.id) |
|
64 tproc.set("name", bk.name) |
|
65 tproc.set("url", bk.url) |
|
66 tproc.set("Keywords", map(lambda x: {'keyword': x }, kw)) |
|
67 print tproc.process(tmpl) |
|
68 |
|
69 if (__name__ == "__main__"): |
|
70 form = cgi.FieldStorage() |
|
71 db = my_db.connect() |
|
72 id = int(form['id'].value) |
|
73 action = form['action'].value |
|
74 if action == 'cancel' or (action == 'delete' and id == -1): |
|
75 load_index(db) |
|
76 else: |
|
77 if action == 'update': |
|
78 bk = get_bk_from_form(form) |
|
79 kw = get_unique_keywords(form, db) |
|
80 else: |
|
81 bk = db.get_bookmarks([id])[0] |
|
82 (ids, kw) = apply(zip,db.get_keywords(id)) |
|
83 main(action, bk, kw[1:]) |
|
84 |