lib/actions/editkw.py
changeset 58 004a32370ba5
parent 47 2781ac85b807
child 74 6784c4350b41
equal deleted inserted replaced
57:31271426f879 58:004a32370ba5
       
     1 from keywords import get_keywords
       
     2 from webutils import load_index
       
     3 from templates import Template
       
     4 
       
     5 def print_kw(keywords, prefs):
       
     6     tmpl = Template("edit_kw.tmpl", prefs, "", "")
       
     7     tmpl.set('Keywords', keywords)
       
     8     print tmpl.process()
       
     9 
       
    10 def print_confirm(step, sel_keywords, keywords, prefs):
       
    11     if step == 'delete':
       
    12     	tmpl = Template("kw_delete.tmpl", prefs)
       
    13     elif step == 'merge':
       
    14     	tmpl = Template("kw_merge.tmpl", prefs)
       
    15     elif step == 'rename':
       
    16     	tmpl = Template("kw_rename.tmpl", prefs)
       
    17     tmpl.set("Selected", sel_keywords)
       
    18     tmpl.set("Keywords", keywords)
       
    19     print tmpl.process()
       
    20 
       
    21 def list_kw(db, prefs):
       
    22     kw = db.get_all_keywords()[1:]
       
    23     kw = map(lambda elem: {
       
    24    	 'id' : elem[0],
       
    25 	 'keyword' : elem[1] }, kw)
       
    26     kw.sort(lambda l,r: cmp(l['keyword'],r['keyword']))
       
    27     print_kw(kw, prefs)
       
    28 
       
    29 def confirm_kw(step, db, prefs, form):
       
    30     ids = get_keywords(form, 'kw')
       
    31     keywords = map(lambda e: { 'id': e[0], 'keyword': e[1]},
       
    32    	 db.get_all_keywords()[1:])
       
    33     keywords.sort(lambda x, y: cmp(x['keyword'],y['keyword']))
       
    34     sel_keywords = filter(lambda e: e['id'] in ids, keywords)
       
    35     keywords = filter(lambda e: e['id'] not in ids, keywords)
       
    36     print_confirm(step, sel_keywords, keywords, prefs)
       
    37 
       
    38 def do_merge(db, prefs, form):
       
    39 	fromids = get_keywords(form, 'id')
       
    40 	toids = get_keywords(form, 'kw')
       
    41 	remove_them = form.has_key('remove')
       
    42 	if remove_them:
       
    43 		lastid = toids.pop()
       
    44 	status = "result"
       
    45 	status_msg = []
       
    46 	for id in fromids:
       
    47 		fromkw = db.get_keyword(id)
       
    48 		for dest in toids:
       
    49 			tokw = db.get_keyword(dest)
       
    50 			status_msg.append("Adding '%s' into '%s'." % (fromkw, tokw))
       
    51 			db.add_keywords(id, dest) 
       
    52 		if remove_them:
       
    53 			tokw = db.get_keyword(lastid)
       
    54 			status_msg.append("Merging '%s' into '%s'." % (fromkw, tokw))
       
    55 			db.merge_keywords(id, lastid)
       
    56 	load_index(db, prefs, form, status, "<br/>".join(status_msg))
       
    57 
       
    58 def do_rename(db, prefs, form):
       
    59 	ids = get_keywords(form, 'id')
       
    60 	status = "result"
       
    61 	status_msg = []
       
    62 	for id in ids:
       
    63 		oldname = db.get_keyword(id)
       
    64 		newname = form['name%d' % id].value
       
    65 		status_msg.append("Renaming '%s' into '%s'." % (oldname, newname))
       
    66 		db.update_keyword(id, newname)
       
    67 	load_index(db, prefs, form, status, "<br/>".join(status_msg))
       
    68  
       
    69 def do_delete(db, prefs, form):
       
    70 	ids = get_keywords(form, 'id')
       
    71 	status = "result"
       
    72 	status_msg = []
       
    73 	for id in ids:
       
    74 		kw = db.get_keyword(id)
       
    75 		status_msg.append("Removing '%s'." % kw)
       
    76 		db.remove_keyword(id)
       
    77 	load_index(db, prefs, form, status, "<br/>".join(status_msg))
       
    78 
       
    79 def do_it(action, db, prefs, form):
       
    80 	step = 'list'
       
    81 	if form.has_key('step'):
       
    82 		step = form['step'].value
       
    83 	if step == 'list':
       
    84 		list_kw(db, prefs)
       
    85 	elif step == 'cancel':
       
    86 		load_index(db, prefs, form, "err", "Operation cancel")
       
    87 	elif step == 'do_delete':
       
    88 		do_delete(db, prefs, form)
       
    89 	elif step == 'do_merge':
       
    90 		do_merge(db, prefs, form)
       
    91 	elif step == 'do_rename':
       
    92 		do_rename(db, prefs, form)
       
    93 	else:
       
    94 		confirm_kw(step, db, prefs, form)