lib/folders.py
branchxbelweb
changeset 47 2781ac85b807
child 49 57932e991854
equal deleted inserted replaced
46:d3c1de4d929e 47:2781ac85b807
       
     1 #!/usr/bin/python
       
     2 
       
     3 from templates import Template
       
     4 from keywords import set_selection, sort_keywords
       
     5 
       
     6 def do_folder_action(db, form, folder):
       
     7    if form['action'].value == 'add':
       
     8     	if form.has_key('sel'):
       
     9 		keyword = int(form['sel'].value)
       
    10 		db.add_folder(keyword, folder)
       
    11 		print "<em>Folder successfully add.</em>"
       
    12 		return keyword
       
    13    elif form['action'].value == 'delete':
       
    14    	if form.has_key('delete'):
       
    15 		keyword = int(form['delete'].value)
       
    16 		db.remove_folders(keyword)
       
    17 		print "<em>Folder successfully remove.</em>"
       
    18 		return keyword
       
    19    return -1
       
    20 
       
    21 def output(prefs, folder, parents, children, bookmarks, keywords):
       
    22     tmpl = Template("folders.tmpl", prefs)
       
    23     tmpl.set('Parents', parents)
       
    24     tmpl.set('folder', folder['id'])
       
    25     tmpl.set('name', folder['name'])
       
    26     tmpl.set('total', len(bookmarks))
       
    27     bookmarks.sort(lambda l,r: cmp(l['name'],r['name']))
       
    28     tmpl.set('Bookmarks', bookmarks)
       
    29     tmpl.set('Subfolders', children)
       
    30     keywords = sort_keywords(keywords[1:], prefs)
       
    31     tmpl.set('Keywords', keywords)
       
    32     print tmpl.process()
       
    33 
       
    34 def do_folders(db, prefs, form = None):
       
    35     folder = 0
       
    36     if form:
       
    37     	if form.has_key('folder'):
       
    38     		folder = int(form['folder'].value)
       
    39    	if form.has_key('action'):
       
    40 		do_folder_action(db, form, folder)
       
    41     parents = db.get_folder_parents_and_self(folder)
       
    42     children = db.get_subfolders(folder)
       
    43     parents.reverse()
       
    44     selection = map(lambda e: e['keyword'], parents)
       
    45     exclusion = map(lambda e: e['keyword'], children)
       
    46     bookmarks = db.select_bookmarks(selection, exclusion)
       
    47     selected_keywords = set_selection(db,
       
    48 		map(lambda e: e[0], bookmarks),
       
    49 		selection, exclusion)
       
    50     keywords = []
       
    51     for keyword in selected_keywords:
       
    52     	if not keyword['id'] in exclusion:
       
    53 		keywords.append(keyword)
       
    54     for child in children:
       
    55     	child['count'] = len(db.select_bookmarks(selection + [child['keyword']]))
       
    56     bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks))
       
    57     bookmarks = map(lambda bk: bk.dict(), bookmarks)
       
    58     output(prefs, parents.pop(), parents, children, bookmarks, keywords)