lib/folders.py
branchxbelweb
changeset 54 f74bad856bce
parent 53 e80160a19653
child 58 004a32370ba5
equal deleted inserted replaced
53:e80160a19653 54:f74bad856bce
     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)