#!/usr/bin/python
from templates import Template
from keywords import set_selection, sort_keywords
def do_folder_action(db, form, folder):
if form['action'].value == 'add':
if form.has_key('sel'):
keyword = int(form['sel'].value)
db.add_folder(keyword, folder)
print "<em>Folder successfully add.</em>"
return keyword
elif form['action'].value == 'delete':
if form.has_key('delete'):
keyword = int(form['delete'].value)
db.remove_folders(keyword)
print "<em>Folder successfully remove.</em>"
return keyword
return -1
def output(prefs, folder, parents, children, bookmarks, keywords):
tmpl = Template("folders.tmpl", prefs)
tmpl.set('Parents', parents)
tmpl.set('folder', folder['id'])
tmpl.set('name', folder['name'])
tmpl.set('total', len(bookmarks))
bookmarks.sort(lambda l,r: cmp(l['name'],r['name']))
tmpl.set('Bookmarks', bookmarks)
tmpl.set('Subfolders', children)
keywords = sort_keywords(keywords[1:], prefs)
tmpl.set('Keywords', keywords)
print tmpl.process()
def do_folders(db, prefs, form = None):
folder = 0
if form:
if form.has_key('folder'):
folder = int(form['folder'].value)
if form.has_key('action'):
do_folder_action(db, form, folder)
parents = db.get_folder_parents_and_self(folder)
children = db.get_subfolders(folder)
selection = map(lambda e: e['keyword'], parents)
exclusion = map(lambda e: e['keyword'], children)
parents.reverse()
folder = parents.pop()
bookmarks = db.select_bookmarks(selection)
selected_keywords = set_selection(db,
map(lambda e: e[0], bookmarks),
selection)
keywords = []
subfolders = []
folders_keywords = selection +exclusion
for keyword in selected_keywords:
if keyword['id'] not in folders_keywords:
keywords.append(keyword)
for child in children:
if child['keyword'] == keyword['id']:
child['count'] = keyword['count']
subfolders.append(child)
children.remove(child)
break
bookmarks = db.select_bookmarks(selection, exclusion)
if len(bookmarks) <> 0:
bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks))
bookmarks = map(lambda bk: bk.dict(), bookmarks)
output(prefs, folder, parents, subfolders, bookmarks, keywords)