folders.py
branchxbelweb
changeset 47 2781ac85b807
parent 46 d3c1de4d929e
child 48 9cde0ea6f411
equal deleted inserted replaced
46:d3c1de4d929e 47:2781ac85b807
     1 #!/usr/bin/python
       
     2 
       
     3 import sys
       
     4 import traceback
       
     5 if (__name__ == '__main__'):
       
     6 	sys.path.insert(0, "/home/fabien/lib/python")
       
     7 	sys.path.insert(0, "./lib")
       
     8 	sys.stderr = sys.stdout
       
     9 
       
    10 	print "Content-type: text/html; charset=iso-8859-1;"
       
    11 	print
       
    12 
       
    13 # import cgitb; cgitb.enable()
       
    14 import cgi
       
    15 import my_db
       
    16 from os import environ
       
    17 from htmltmpl import TemplateManager
       
    18 from webutils import get_template_processor, set_selection, sort_keywords
       
    19 
       
    20 def output(prefs, folder, parents, children, bookmarks, keywords):
       
    21     tmpl = TemplateManager().prepare("folders.tmpl")
       
    22     tproc = get_template_processor(prefs)
       
    23     tproc.set('Parents', parents)
       
    24     tproc.set('folder', folder['id'])
       
    25     tproc.set('name', folder['name'])
       
    26     tproc.set('total', len(bookmarks))
       
    27     bookmarks.sort(lambda l,r: cmp(l['name'],r['name']))
       
    28     tproc.set('Bookmarks', bookmarks)
       
    29     tproc.set('Subfolders', children)
       
    30     keywords = sort_keywords(keywords[1:], prefs)
       
    31     tproc.set('Keywords', keywords)
       
    32     print tproc.process(tmpl)
       
    33 
       
    34 if (__name__ == "__main__"):
       
    35     form = cgi.FieldStorage()
       
    36     db = my_db.connect(environ["REMOTE_USER"])
       
    37     if form.has_key('folder'):
       
    38     	folder = int(form['folder'].value)
       
    39     else:
       
    40     	folder = 0
       
    41     if form.has_key('action'):
       
    42     	if form['action'].value == 'add':
       
    43     		if form.has_key('sel'):
       
    44 			keyword = int(form['sel'].value)
       
    45 			db.add_folder(keyword, folder)
       
    46 			print "<em>Folder successfully add.</em>"
       
    47     parents = db.get_folder_parents_and_self(folder)
       
    48     children = db.get_subfolders(folder)
       
    49     parents.reverse()
       
    50     selection = map(lambda e: e['keyword'], parents)
       
    51     exclusion = map(lambda e: e['keyword'], children)
       
    52     bookmarks = db.select_bookmarks(selection, exclusion)
       
    53     selected_keywords = set_selection(db,
       
    54 		map(lambda e: e[0], bookmarks),
       
    55 		selection, exclusion)
       
    56     keywords = []
       
    57     for keyword in selected_keywords:
       
    58     	if not keyword['id'] in exclusion:
       
    59 		keywords.append(keyword)
       
    60     for child in children:
       
    61     	child['count'] = len(db.select_bookmarks(selection + [child['keyword']]))
       
    62     bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks))
       
    63     bookmarks = map(lambda bk: bk.dict(), bookmarks)
       
    64     output(db.get_preferences(), parents.pop(), parents, children, bookmarks, keywords)