1 #!/usr/bin/python |
|
2 |
|
3 from templates import Template |
1 from templates import Template |
4 from keywords import set_selection, sort_keywords |
2 from keywords import set_selection, sort_keywords |
|
3 from __future__ import nested_scopes |
5 |
4 |
6 def do_folder_action(db, form, folder): |
5 def do_folder_action(db, form, folder): |
7 if form['action'].value == 'add': |
6 if form['action'].value == 'add': |
8 if form.has_key('sel'): |
7 if form.has_key('sel'): |
9 keyword = int(form['sel'].value) |
8 keyword = int(form['sel'].value) |
51 selection = map(lambda e: e['keyword'], parents) |
50 selection = map(lambda e: e['keyword'], parents) |
52 exclusion = map(lambda e: e['keyword'], children) |
51 exclusion = map(lambda e: e['keyword'], children) |
53 folders_keywords = [] |
52 folders_keywords = [] |
54 for parent in parents: |
53 for parent in parents: |
55 folders_keywords.append(parent['keyword']) |
54 folders_keywords.append(parent['keyword']) |
56 parent['count'] = db.get_bookmarks_count(folders_keywords) |
55 parent['count'] = db.get_bookmarks_count(folders_keywords)[0][1] |
|
56 children_keywords = db.get_bookmarks_count(selection, [], exclusion) |
57 for child in children: |
57 for child in children: |
58 folders_keywords.append(child['keyword']) |
58 folders_keywords.append(child['keyword']) |
59 # This is really selection, not folders_keywords |
59 # This is really selection, not folders_keywords |
60 child['count'] = db.get_bookmarks_count(selection + [child['keyword']]) |
60 child['count'] = 0 |
|
61 for kw in children_keywords: |
|
62 if kw[0] == child['keyword']: |
|
63 child['count'] = kw[1] |
|
64 children_keywords.remove(kw) |
|
65 break |
|
66 del children_keywords |
61 bookmarks = map(lambda bk: bk[0], db.select_bookmarks(selection)) |
67 bookmarks = map(lambda bk: bk[0], db.select_bookmarks(selection)) |
62 allkw = db.get_keywords(bookmarks) |
68 allkw = filter(lambda kw: kw[0] not in folders_keywords, |
63 keywords = [] |
69 db.get_keywords(bookmarks)) |
64 for keyword in allkw: |
70 keywords = map(lambda kw: { 'id': kw[0], 'keyword': kw[1] }, allkw) |
65 if keyword[0] not in folders_keywords: |
71 allkw = map(lambda kw: kw[0], allkw) |
66 kw = { 'id': keyword[0], 'keyword': keyword[1] } |
72 count = db.get_bookmarks_count(selection, [], allkw) |
67 kwsel = selection + [kw['id']] |
73 removed = db.get_bookmarks_count(selection, exclusion, allkw) |
68 kw['count'] = db.get_bookmarks_count(kwsel) |
74 for kw in keywords: |
69 kw['removed'] = db.get_bookmarks_count(kwsel, exclusion) |
75 kw['count'] = 0 |
70 keywords.append(kw) |
76 kw['removed'] = 0 |
71 del allkw, folders_keywords |
77 for cnt in count: |
|
78 if kw['id'] == cnt[0]: |
|
79 kw['count'] = cnt[1] |
|
80 count.remove(cnt) |
|
81 break |
|
82 for cnt in removed: |
|
83 if kw['id'] == cnt[0]: |
|
84 kw['removed'] = cnt[1] |
|
85 removed.remove(cnt) |
|
86 break |
|
87 del allkw, count, removed |
72 bookmarks = db.select_bookmarks(selection, exclusion) |
88 bookmarks = db.select_bookmarks(selection, exclusion) |
73 if len(bookmarks) <> 0: |
89 if len(bookmarks) <> 0: |
74 bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks)) |
90 bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks)) |
75 bookmarks = map(lambda bk: bk.dict(), bookmarks) |
91 bookmarks = map(lambda bk: bk.dict(), bookmarks) |
76 output(prefs, parents.pop(), parents, children, bookmarks, keywords) |
92 output(prefs, parents.pop(), parents, children, bookmarks, keywords) |