|
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 |