author | fabien@tzone.org |
Tue, 30 Dec 2008 23:32:33 -0500 | |
changeset 67 | 652ff41518f3 |
parent 51 | 7015d65beb3d |
child 71 | 591ffdca8041 |
permissions | -rw-r--r-- |
47
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
1 |
def get_keywords(form, name): |
51
7015d65beb3d
[svn r1608] Correct the keywords bugs and some other in folder view, plus mutual
fabien
parents:
47
diff
changeset
|
2 |
"""extract keywords associate with field name 'name'.""" |
47
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
3 |
kws = form.getvalue(name) |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
4 |
if not isinstance(kws, type([])): |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
5 |
if kws: |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
6 |
kws = [kws] |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
7 |
else: |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
8 |
kws = [] |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
9 |
return map(int, kws) |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
10 |
|
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
11 |
def set_selection(db, bk, sel, exc = []): |
51
7015d65beb3d
[svn r1608] Correct the keywords bugs and some other in folder view, plus mutual
fabien
parents:
47
diff
changeset
|
12 |
"""select keywords selected in the bookmarks list.""" |
47
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
13 |
if len(bk) > 0: |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
14 |
ids, names = map(list,apply(zip,db.get_keywords(bk))) |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
15 |
for key in exc: |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
16 |
if key not in ids: |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
17 |
ids.append(key) |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
18 |
names.append(db.get_keyword(key)) |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
19 |
allkw = map(lambda x,y: [x, y], ids, names) |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
20 |
else: |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
21 |
allkw = db.get_all_keywords() |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
22 |
(kw, cnt) = map(list,apply(zip, db.get_keywords_count(bk))) |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
23 |
res = [] |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
24 |
for key in allkw: |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
25 |
is_selected = key[0] in sel |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
26 |
is_excluded = key[0] in exc |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
27 |
is_unselected = not (is_selected or is_excluded) |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
28 |
if key[0] in kw: |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
29 |
kcnt = cnt[kw.index(key[0])] |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
30 |
else: |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
31 |
kcnt = 0 |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
32 |
res.append({'id':key[0], |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
33 |
'keyword': key[1], |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
34 |
'count' : kcnt, |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
35 |
'selected' : is_selected, |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
36 |
'excluded' : is_excluded, |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
37 |
'unselected' : is_unselected}) |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
38 |
return res |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
39 |
|
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
40 |
def sort_keywords(kw, pref): |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
41 |
global _sk_rev_fact |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
42 |
global _sk_sort |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
43 |
if pref['keywords_reverse']: |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
44 |
_sk_rev_fact = -1 |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
45 |
else: |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
46 |
_sk_rev_fact = 1 |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
47 |
_sk_sort = pref['keywords_sort'] |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
48 |
kw.sort(lambda l, r: _sk_rev_fact*cmp(l[_sk_sort], r[_sk_sort])) |
2781ac85b807
[svn r1604] Implement default_view preferences, which move things around a lot.
fabien
parents:
diff
changeset
|
49 |
return kw |