16 db.remove_folders(keyword) |
16 db.remove_folders(keyword) |
17 print "<em>Folder successfully remove.</em>" |
17 print "<em>Folder successfully remove.</em>" |
18 return keyword |
18 return keyword |
19 return -1 |
19 return -1 |
20 |
20 |
|
21 def sort_kw_with_removed(l, r): |
|
22 result = l['removed'] - r['removed'] |
|
23 if result == 0: |
|
24 result = l['count'] - r['count'] |
|
25 return -int(result) |
|
26 |
21 def output(prefs, folder, parents, children, bookmarks, keywords): |
27 def output(prefs, folder, parents, children, bookmarks, keywords): |
22 tmpl = Template("folders.tmpl", prefs) |
28 tmpl = Template("folders.tmpl", prefs) |
23 tmpl.set('Parents', parents) |
29 tmpl.set('Parents', parents) |
24 tmpl.set('folder', folder['id']) |
30 tmpl.set('folder', folder['id']) |
25 tmpl.set('name', folder['name']) |
31 tmpl.set('name', folder['name']) |
26 tmpl.set('total', len(bookmarks)) |
32 tmpl.set('total', folder['count']) |
|
33 tmpl.set('subtotal', len(bookmarks)) |
27 bookmarks.sort(lambda l,r: cmp(l['name'],r['name'])) |
34 bookmarks.sort(lambda l,r: cmp(l['name'],r['name'])) |
28 tmpl.set('Bookmarks', bookmarks) |
35 tmpl.set('Bookmarks', bookmarks) |
29 tmpl.set('Subfolders', children) |
36 tmpl.set('Subfolders', children) |
30 keywords = sort_keywords(keywords[1:], prefs) |
37 keywords.sort(sort_kw_with_removed) |
31 tmpl.set('Keywords', keywords) |
38 tmpl.set('Keywords', keywords) |
32 print tmpl.process() |
39 print tmpl.process() |
33 |
40 |
34 def do_folders(db, prefs, form = None): |
41 def do_folders(db, prefs, form = None): |
35 folder = 0 |
42 folder = 0 |
37 if form.has_key('folder'): |
44 if form.has_key('folder'): |
38 folder = int(form['folder'].value) |
45 folder = int(form['folder'].value) |
39 if form.has_key('action'): |
46 if form.has_key('action'): |
40 do_folder_action(db, form, folder) |
47 do_folder_action(db, form, folder) |
41 parents = db.get_folder_parents_and_self(folder) |
48 parents = db.get_folder_parents_and_self(folder) |
|
49 parents.reverse() |
42 children = db.get_subfolders(folder) |
50 children = db.get_subfolders(folder) |
43 selection = map(lambda e: e['keyword'], parents) |
51 selection = map(lambda e: e['keyword'], parents) |
44 exclusion = map(lambda e: e['keyword'], children) |
52 exclusion = map(lambda e: e['keyword'], children) |
45 parents.reverse() |
53 folders_keywords = [] |
46 folder = parents.pop() |
54 for parent in parents: |
47 bookmarks = db.select_bookmarks(selection) |
55 folders_keywords.append(parent['keyword']) |
48 selected_keywords = set_selection(db, |
56 parent['count'] = db.get_bookmarks_count(folders_keywords) |
49 map(lambda e: e[0], bookmarks), |
57 for child in children: |
50 selection) |
58 folders_keywords.append(child['keyword']) |
|
59 # This is really selection, not folders_keywords |
|
60 child['count'] = db.get_bookmarks_count(selection + [child['keyword']]) |
|
61 bookmarks = map(lambda bk: bk[0], db.select_bookmarks(selection)) |
|
62 allkw = db.get_keywords(bookmarks) |
51 keywords = [] |
63 keywords = [] |
52 subfolders = [] |
64 for keyword in allkw: |
53 folders_keywords = selection +exclusion |
65 if keyword[0] not in folders_keywords: |
54 for keyword in selected_keywords: |
66 kw = { 'id': keyword[0], 'keyword': keyword[1] } |
55 if keyword['id'] not in folders_keywords: |
67 kwsel = selection + [kw['id']] |
56 keywords.append(keyword) |
68 kw['count'] = db.get_bookmarks_count(kwsel) |
57 for child in children: |
69 kw['removed'] = db.get_bookmarks_count(kwsel, exclusion) |
58 if child['keyword'] == keyword['id']: |
70 keywords.append(kw) |
59 child['count'] = keyword['count'] |
71 del allkw, folders_keywords |
60 subfolders.append(child) |
|
61 children.remove(child) |
|
62 break |
|
63 bookmarks = db.select_bookmarks(selection, exclusion) |
72 bookmarks = db.select_bookmarks(selection, exclusion) |
64 if len(bookmarks) <> 0: |
73 if len(bookmarks) <> 0: |
65 bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks)) |
74 bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks)) |
66 bookmarks = map(lambda bk: bk.dict(), bookmarks) |
75 bookmarks = map(lambda bk: bk.dict(), bookmarks) |
67 output(prefs, folder, parents, subfolders, bookmarks, keywords) |
76 output(prefs, parents.pop(), parents, children, bookmarks, keywords) |
|
77 |