10 print |
10 print |
11 |
11 |
12 # import cgitb; cgitb.enable() |
12 # import cgitb; cgitb.enable() |
13 import cgi |
13 import cgi |
14 from htmltmpl import TemplateManager, TemplateProcessor |
14 from htmltmpl import TemplateManager, TemplateProcessor |
|
15 import time |
|
16 from utils import unique |
15 import my_db |
17 import my_db |
16 import time |
18 from add_confirm import get_bk_from_form, get_new_kw_from_form |
17 from bkmark import Bookmark |
19 from index import load_index |
18 |
20 |
19 def get_bk_from_form(form): |
21 def add_new_keywords(db, newkw): |
20 bk = Bookmark() |
22 kw = [0] # Default keyword, so that every bookmarks appears in |
21 bk.id = int(form['id'].value) |
23 # the bookmarks_keywords db. |
22 bk.url = form['url'].value |
24 (ids, kws, cnt) = map(list,apply(zip, db.get_all_keywords())) |
23 if form.has_key('name'): |
25 for elem in unique(newkw): |
24 bk.name = form['name'].value |
26 if elem in kws: |
25 if form.has_key('desc'): |
27 kw.append(ids[kws.index(elem)]) |
26 bk.desc = form['desc'].value |
|
27 return bk |
|
28 |
|
29 def get_kw_from_form(form): |
|
30 kw = form.getvalue("kw") |
|
31 if not isinstance(kw, type([])): |
|
32 if kw: |
|
33 kw = [kw] |
|
34 else: |
|
35 kw = [] |
|
36 kw = map(int, kw) |
|
37 return kw |
|
38 |
|
39 def get_new_kw_from_form(form): |
|
40 if form.has_key('newkw'): |
|
41 return map(lambda e: e.strip(), |
|
42 form['newkw'].value.split(',')) |
|
43 else: |
28 else: |
44 return [] |
29 id = db.add_keyword(elem) |
|
30 kw.append(id) |
|
31 return kw |
45 |
32 |
46 def main(bk, kw): |
33 def main(bk, kw): |
47 tmpl = TemplateManager().prepare("add_result.tmpl") |
34 tmpl = TemplateManager().prepare("add_result.tmpl") |
48 tproc = TemplateProcessor() |
35 tproc = TemplateProcessor() |
49 tproc.set("url", bk.url) |
36 tproc.set("url", bk.url) |
54 print tproc.process(tmpl) |
41 print tproc.process(tmpl) |
55 |
42 |
56 if (__name__ == "__main__"): |
43 if (__name__ == "__main__"): |
57 form = cgi.FieldStorage() |
44 form = cgi.FieldStorage() |
58 db = my_db.connect() |
45 db = my_db.connect() |
59 bk = get_bk_from_form(form) |
46 action = form['action'].value |
60 kw = get_kw_from_form(form) |
47 if action == 'cancel': |
61 newkw = get_new_kw_from_form(form) |
48 load_index(db) |
62 (ids, kws, cnt) = map(list,apply(zip, db.get_all_keywords())) |
49 elif action == 'delete': |
63 for elem in newkw: |
50 db.remove_bookmark(int(form['id'].value)) |
64 if elem in kws: |
51 load_index(db) |
65 kw.append(ids[kws.index(elem)]) |
52 else: |
66 else: |
53 bk = get_bk_from_form(form) |
67 id = db.add_keyword(elem) |
54 newkw = get_new_kw_from_form(form) |
68 kw.append(id) |
55 kw = add_new_keywords(db, newkw) |
69 if bk.id == -1: |
56 if bk.id == -1: |
70 id = db.add_bookmark(bk) |
57 id = db.add_bookmark(bk) |
71 else: |
58 else: |
72 db.update_bookmark(bk) |
59 db.update_bookmark(bk) |
73 id = bk.id |
60 id = bk.id |
74 db.update_keywords(id, kw) |
61 db.update_keywords(id, kw) |
75 kw = map(lambda e: { 'keyword': e[1] }, db.get_keywords(id)[1:]) |
62 kw = map(lambda e: { 'keyword': e[1] }, db.get_keywords(id)[1:]) |
76 main(bk, kw) |
63 main(bk, kw) |