38 folder = int(form['folder'].value) |
38 folder = int(form['folder'].value) |
39 if form.has_key('action'): |
39 if form.has_key('action'): |
40 do_folder_action(db, form, folder) |
40 do_folder_action(db, form, folder) |
41 parents = db.get_folder_parents_and_self(folder) |
41 parents = db.get_folder_parents_and_self(folder) |
42 children = db.get_subfolders(folder) |
42 children = db.get_subfolders(folder) |
43 parents.reverse() |
|
44 selection = map(lambda e: e['keyword'], parents) |
43 selection = map(lambda e: e['keyword'], parents) |
45 exclusion = map(lambda e: e['keyword'], children) |
44 exclusion = map(lambda e: e['keyword'], children) |
46 bookmarks = db.select_bookmarks(selection, exclusion) |
45 parents.reverse() |
|
46 folder = parents.pop() |
|
47 bookmarks = db.select_bookmarks(selection) |
47 selected_keywords = set_selection(db, |
48 selected_keywords = set_selection(db, |
48 map(lambda e: e[0], bookmarks), |
49 map(lambda e: e[0], bookmarks), |
49 selection, exclusion) |
50 selection) |
50 keywords = [] |
51 keywords = [] |
|
52 folders_keywords = selection +exclusion |
51 for keyword in selected_keywords: |
53 for keyword in selected_keywords: |
52 if not keyword['id'] in exclusion: |
54 if keyword['id'] not in folders_keywords: |
53 keywords.append(keyword) |
55 keywords.append(keyword) |
54 for child in children: |
56 for child in children: |
55 child['count'] = len(db.select_bookmarks(selection + [child['keyword']])) |
57 child['count'] = len(db.select_bookmarks(selection + [child['keyword']])) |
|
58 bookmarks = db.select_bookmarks(selection, exclusion) |
56 if len(bookmarks) <> 0: |
59 if len(bookmarks) <> 0: |
57 bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks)) |
60 bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks)) |
58 bookmarks = map(lambda bk: bk.dict(), bookmarks) |
61 bookmarks = map(lambda bk: bk.dict(), bookmarks) |
59 output(prefs, parents.pop(), parents, children, bookmarks, keywords) |
62 output(prefs, folder, parents, children, bookmarks, keywords) |