add_result.py
branchxbelweb
changeset 17 14bec94bbe89
parent 13 7357230539d2
child 21 345ee7421989
equal deleted inserted replaced
16:07adce9ccccb 17:14bec94bbe89
    10 print
    10 print
    11 
    11 
    12 # import cgitb; cgitb.enable()
    12 # import cgitb; cgitb.enable()
    13 import cgi
    13 import cgi
    14 from htmltmpl import TemplateManager, TemplateProcessor
    14 from htmltmpl import TemplateManager, TemplateProcessor
       
    15 import time
       
    16 from utils import unique
    15 import my_db
    17 import my_db
    16 import time
    18 from add_confirm import get_bk_from_form, get_new_kw_from_form
    17 from bkmark import Bookmark
    19 from index import load_index
    18 
    20 
    19 def get_bk_from_form(form):
    21 def add_new_keywords(db, newkw):
    20 	bk = Bookmark()
    22     kw = [0] # Default keyword, so that every bookmarks appears in
    21 	bk.id = int(form['id'].value)
    23              # the bookmarks_keywords db.
    22 	bk.url = form['url'].value
    24     (ids, kws, cnt) = map(list,apply(zip, db.get_all_keywords()))
    23 	if form.has_key('name'):
    25     for elem in unique(newkw):
    24 		bk.name = form['name'].value
    26     	if elem in kws:
    25 	if form.has_key('desc'):
    27 		kw.append(ids[kws.index(elem)])
    26 		bk.desc = form['desc'].value
       
    27 	return bk
       
    28 
       
    29 def get_kw_from_form(form):
       
    30 	kw = form.getvalue("kw")
       
    31 	if not isinstance(kw, type([])):
       
    32 		if kw:
       
    33 			kw = [kw]
       
    34 		else:
       
    35 			kw = []
       
    36 	kw = map(int, kw)
       
    37 	return kw
       
    38 
       
    39 def get_new_kw_from_form(form):
       
    40 	if form.has_key('newkw'):
       
    41 		return map(lambda e: e.strip(),
       
    42 			form['newkw'].value.split(','))
       
    43 	else:
    28 	else:
    44 		return []
    29 		id = db.add_keyword(elem)
       
    30 		kw.append(id)
       
    31     return kw
    45 
    32 
    46 def main(bk, kw):
    33 def main(bk, kw):
    47     tmpl = TemplateManager().prepare("add_result.tmpl")
    34     tmpl = TemplateManager().prepare("add_result.tmpl")
    48     tproc = TemplateProcessor()
    35     tproc = TemplateProcessor()
    49     tproc.set("url", bk.url)
    36     tproc.set("url", bk.url)
    54     print tproc.process(tmpl)
    41     print tproc.process(tmpl)
    55 
    42 
    56 if (__name__ == "__main__"):
    43 if (__name__ == "__main__"):
    57     form = cgi.FieldStorage()
    44     form = cgi.FieldStorage()
    58     db = my_db.connect()
    45     db = my_db.connect()
    59     bk = get_bk_from_form(form)
    46     action = form['action'].value
    60     kw = get_kw_from_form(form)
    47     if action == 'cancel':
    61     newkw = get_new_kw_from_form(form)
    48       load_index(db)
    62     (ids, kws, cnt) = map(list,apply(zip, db.get_all_keywords()))
    49     elif action == 'delete':
    63     for elem in newkw:
    50       db.remove_bookmark(int(form['id'].value))
    64     	if elem in kws:
    51       load_index(db)
    65 		kw.append(ids[kws.index(elem)])
    52     else:
    66 	else:
    53       bk = get_bk_from_form(form)
    67 		id = db.add_keyword(elem)
    54       newkw = get_new_kw_from_form(form)
    68 		kw.append(id)
    55       kw = add_new_keywords(db, newkw)
    69     if bk.id == -1:
    56       if bk.id == -1:
    70 	id = db.add_bookmark(bk)
    57 	id = db.add_bookmark(bk)
    71     else:
    58       else:
    72     	db.update_bookmark(bk)
    59 	db.update_bookmark(bk)
    73 	id = bk.id
    60 	id = bk.id
    74     db.update_keywords(id, kw)
    61       db.update_keywords(id, kw)
    75     kw = map(lambda e: { 'keyword': e[1] }, db.get_keywords(id)[1:])
    62       kw = map(lambda e: { 'keyword': e[1] }, db.get_keywords(id)[1:])
    76     main(bk, kw)
    63       main(bk, kw)