|
1 from keywords import get_keywords |
|
2 from webutils import load_index |
|
3 from templates import Template |
|
4 |
|
5 def print_kw(keywords, prefs): |
|
6 tmpl = Template("edit_kw.tmpl", prefs, "", "") |
|
7 tmpl.set('Keywords', keywords) |
|
8 print tmpl.process() |
|
9 |
|
10 def print_confirm(step, sel_keywords, keywords, prefs): |
|
11 if step == 'delete': |
|
12 tmpl = Template("kw_delete.tmpl", prefs) |
|
13 elif step == 'merge': |
|
14 tmpl = Template("kw_merge.tmpl", prefs) |
|
15 elif step == 'rename': |
|
16 tmpl = Template("kw_rename.tmpl", prefs) |
|
17 tmpl.set("Selected", sel_keywords) |
|
18 tmpl.set("Keywords", keywords) |
|
19 print tmpl.process() |
|
20 |
|
21 def list_kw(db, prefs): |
|
22 kw = db.get_all_keywords()[1:] |
|
23 kw = map(lambda elem: { |
|
24 'id' : elem[0], |
|
25 'keyword' : elem[1] }, kw) |
|
26 kw.sort(lambda l,r: cmp(l['keyword'],r['keyword'])) |
|
27 print_kw(kw, prefs) |
|
28 |
|
29 def confirm_kw(step, db, prefs, form): |
|
30 ids = get_keywords(form, 'kw') |
|
31 keywords = map(lambda e: { 'id': e[0], 'keyword': e[1]}, |
|
32 db.get_all_keywords()[1:]) |
|
33 keywords.sort(lambda x, y: cmp(x['keyword'],y['keyword'])) |
|
34 sel_keywords = filter(lambda e: e['id'] in ids, keywords) |
|
35 keywords = filter(lambda e: e['id'] not in ids, keywords) |
|
36 print_confirm(step, sel_keywords, keywords, prefs) |
|
37 |
|
38 def do_merge(db, prefs, form): |
|
39 fromids = get_keywords(form, 'id') |
|
40 toids = get_keywords(form, 'kw') |
|
41 remove_them = form.has_key('remove') |
|
42 if remove_them: |
|
43 lastid = toids.pop() |
|
44 status = "result" |
|
45 status_msg = [] |
|
46 for id in fromids: |
|
47 fromkw = db.get_keyword(id) |
|
48 for dest in toids: |
|
49 tokw = db.get_keyword(dest) |
|
50 status_msg.append("Adding '%s' into '%s'." % (fromkw, tokw)) |
|
51 db.add_keywords(id, dest) |
|
52 if remove_them: |
|
53 tokw = db.get_keyword(lastid) |
|
54 status_msg.append("Merging '%s' into '%s'." % (fromkw, tokw)) |
|
55 db.merge_keywords(id, lastid) |
|
56 load_index(db, prefs, form, status, "<br/>".join(status_msg)) |
|
57 |
|
58 def do_rename(db, prefs, form): |
|
59 ids = get_keywords(form, 'id') |
|
60 status = "result" |
|
61 status_msg = [] |
|
62 for id in ids: |
|
63 oldname = db.get_keyword(id) |
|
64 newname = form['name%d' % id].value |
|
65 status_msg.append("Renaming '%s' into '%s'." % (oldname, newname)) |
|
66 db.update_keyword(id, newname) |
|
67 load_index(db, prefs, form, status, "<br/>".join(status_msg)) |
|
68 |
|
69 def do_delete(db, prefs, form): |
|
70 ids = get_keywords(form, 'id') |
|
71 status = "result" |
|
72 status_msg = [] |
|
73 for id in ids: |
|
74 kw = db.get_keyword(id) |
|
75 status_msg.append("Removing '%s'." % kw) |
|
76 db.remove_keyword(id) |
|
77 load_index(db, prefs, form, status, "<br/>".join(status_msg)) |
|
78 |
|
79 def do_it(action, db, prefs, form): |
|
80 step = 'list' |
|
81 if form.has_key('step'): |
|
82 step = form['step'].value |
|
83 if step == 'list': |
|
84 list_kw(db, prefs) |
|
85 elif step == 'cancel': |
|
86 load_index(db, prefs, form, "err", "Operation cancel") |
|
87 elif step == 'do_delete': |
|
88 do_delete(db, prefs, form) |
|
89 elif step == 'do_merge': |
|
90 do_merge(db, prefs, form) |
|
91 elif step == 'do_rename': |
|
92 do_rename(db, prefs, form) |
|
93 else: |
|
94 confirm_kw(step, db, prefs, form) |