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