lib/keywords.py
branchxbelweb
changeset 47 2781ac85b807
child 51 7015d65beb3d
equal deleted inserted replaced
46:d3c1de4d929e 47:2781ac85b807
       
     1 def get_keywords(form, name):
       
     2 	kws = form.getvalue(name)
       
     3 	if not isinstance(kws, type([])):
       
     4 		if kws:
       
     5 			kws = [kws]
       
     6 		else:
       
     7 			kws = []
       
     8 	return map(int, kws)
       
     9 
       
    10 def set_selection(db, bk, sel, exc = []):
       
    11 	if len(bk) > 0:
       
    12 		ids, names = map(list,apply(zip,db.get_keywords(bk)))
       
    13 		for key in exc:
       
    14 			if key not in ids:
       
    15 				ids.append(key)
       
    16 				names.append(db.get_keyword(key))
       
    17 		allkw = map(lambda x,y: [x, y], ids, names)
       
    18 	else:
       
    19 		allkw = db.get_all_keywords()
       
    20 	(kw, cnt) = map(list,apply(zip, db.get_keywords_count(bk)))
       
    21 	res = []
       
    22 	for key in allkw:
       
    23 		is_selected = key[0] in sel
       
    24 		is_excluded = key[0] in exc
       
    25 		is_unselected = not (is_selected or is_excluded)
       
    26 		if key[0] in kw:
       
    27 			kcnt = cnt[kw.index(key[0])]
       
    28 		else:
       
    29 			kcnt = 0
       
    30 		res.append({'id':key[0],
       
    31 			'keyword': key[1],
       
    32 			'count' : kcnt,
       
    33 			'selected' : is_selected,
       
    34 			'excluded' : is_excluded,
       
    35 			'unselected' : is_unselected})
       
    36 	return res
       
    37 
       
    38 def sort_keywords(kw, pref):
       
    39 	global _sk_rev_fact
       
    40 	global _sk_sort
       
    41 	if pref['keywords_reverse']:
       
    42 		_sk_rev_fact = -1
       
    43 	else:
       
    44 		_sk_rev_fact = 1
       
    45 	_sk_sort = pref['keywords_sort'] 
       
    46 	kw.sort(lambda l, r: _sk_rev_fact*cmp(l[_sk_sort], r[_sk_sort]))
       
    47 	return kw