Mercurial > kallithea
annotate rhodecode/controllers/admin/admin.py @ 3062:a08624dd675e beta
Implemented filtering of admin journal based on Whoosh Query language
ref #210
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 05 Dec 2012 21:14:31 +0100 |
parents | 6b176c679896 |
children | ca2b21819dfd |
rev | line source |
---|---|
760
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
1 # -*- coding: utf-8 -*- |
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
2 """ |
853
f67868ef6cd2
some docs updates on controller
Marcin Kuzminski <marcin@python-works.com>
parents:
825
diff
changeset
|
3 rhodecode.controllers.admin.admin |
f67868ef6cd2
some docs updates on controller
Marcin Kuzminski <marcin@python-works.com>
parents:
825
diff
changeset
|
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
760
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
5 |
825
81ca8a76d055
dirty fix for issue #87
Marcin Kuzminski <marcin@python-works.com>
parents:
760
diff
changeset
|
6 Controller for Admin panel of Rhodecode |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1040
diff
changeset
|
7 |
760
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
8 :created_on: Apr 7, 2010 |
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
9 :author: marcink |
1824
89efedac4e6c
2012 copyrights
Marcin Kuzminski <marcin@python-works.com>
parents:
1421
diff
changeset
|
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com> |
760
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
11 :license: GPLv3, see COPYING for more details. |
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
12 """ |
1206
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
13 # This program is free software: you can redistribute it and/or modify |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
14 # it under the terms of the GNU General Public License as published by |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
15 # the Free Software Foundation, either version 3 of the License, or |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
16 # (at your option) any later version. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1040
diff
changeset
|
17 # |
252
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
235
diff
changeset
|
18 # This program is distributed in the hope that it will be useful, |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
235
diff
changeset
|
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
235
diff
changeset
|
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
235
diff
changeset
|
21 # GNU General Public License for more details. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1040
diff
changeset
|
22 # |
252
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
235
diff
changeset
|
23 # You should have received a copy of the GNU General Public License |
1206
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
24 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
760
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
25 |
43 | 26 import logging |
1040
8e49b6ceffe1
fixes fixes fixes ! optimized queries on journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
27 |
3062
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
28 from pylons import request, tmpl_context as c, url |
1040
8e49b6ceffe1
fixes fixes fixes ! optimized queries on journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
29 from sqlalchemy.orm import joinedload |
8e49b6ceffe1
fixes fixes fixes ! optimized queries on journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
30 from webhelpers.paginate import Page |
3062
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
31 from whoosh.qparser.default import QueryParser |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
32 from whoosh import query |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
33 from sqlalchemy.sql.expression import or_ |
1040
8e49b6ceffe1
fixes fixes fixes ! optimized queries on journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
34 |
8e49b6ceffe1
fixes fixes fixes ! optimized queries on journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
35 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator |
547
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
350
diff
changeset
|
36 from rhodecode.lib.base import BaseController, render |
3062
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
37 from rhodecode.model.db import UserLog, User |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
38 from rhodecode.lib.utils2 import safe_int, remove_prefix |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
39 from rhodecode.lib.indexers import JOURNAL_SCHEMA |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
40 |
140
b5e59e2b5cfe
moved cache invalidating to utils, as seperate function. Implemented invalidating in
Marcin Kuzminski <marcin@python-works.com>
parents:
133
diff
changeset
|
41 |
43 | 42 log = logging.getLogger(__name__) |
43 | |
1245
5f2fbab7c429
PEP8ify - controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
44 |
3062
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
45 def _filter(user_log, search_term): |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
46 """ |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
47 Filters sqlalchemy user_log based on search_term with whoosh Query language |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
48 http://packages.python.org/Whoosh/querylang.html |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
49 |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
50 :param user_log: |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
51 :param search_term: |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
52 """ |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
53 qry = None |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
54 if search_term: |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
55 qp = QueryParser('repository', schema=JOURNAL_SCHEMA) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
56 qry = qp.parse(unicode(search_term)) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
57 log.debug('Filtering using query %r' % qry) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
58 |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
59 def get_filterion(field, val, term): |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
60 if field == 'repository': |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
61 field = getattr(UserLog, 'repository_name') |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
62 elif field == 'ip': |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
63 field = getattr(UserLog, 'user_ip') |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
64 elif field == 'date': |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
65 field = getattr(UserLog, 'action_date') |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
66 elif field == 'username': |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
67 ##special case for username |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
68 if isinstance(term, query.Wildcard): |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
69 #only support wildcards with * at beggining |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
70 val = remove_prefix(val, prefix='*') |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
71 return getattr(UserLog, 'user_id').in_( |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
72 [x.user_id for x in |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
73 User.query().filter(User.username.endswith(val))]) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
74 elif isinstance(term, query.Prefix): |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
75 return getattr(UserLog, 'user_id').in_( |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
76 [x.user_id for x in |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
77 User.query().filter(User.username.startswith(val))]) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
78 # term == exact match, case insensitive |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
79 field = getattr(UserLog, 'user') |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
80 val = User.get_by_username(val, case_insensitive=True) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
81 |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
82 else: |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
83 field = getattr(UserLog, field) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
84 |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
85 #sql filtering |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
86 if isinstance(term, query.Wildcard): |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
87 return field.endsswith(val) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
88 elif isinstance(term, query.Prefix): |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
89 return field.startswith(val) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
90 return field == val |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
91 |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
92 if isinstance(qry, (query.And, query.Term, query.Prefix, query.Wildcard)): |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
93 if not isinstance(qry, query.And): |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
94 qry = [qry] |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
95 for term in qry: |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
96 field = term.fieldname |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
97 val = term.text |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
98 user_log = user_log.filter(get_filterion(field, val, term)) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
99 elif isinstance(qry, query.Or): |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
100 filters = [] |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
101 for term in qry: |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
102 field = term.fieldname |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
103 val = term.text |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
104 if isinstance(term, query.Term): |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
105 filters.append(get_filterion(field, val, term)) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
106 user_log = user_log.filter(or_(*filters)) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
107 |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
108 return user_log |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
109 |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
110 |
43 | 111 class AdminController(BaseController): |
760
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
112 |
191
b68b2246e5a6
Authenticated controller with LoginRequired decorator, and cleaned __before__ (used in baseController now). fixed User for clone url with logged in session user.
Marcin Kuzminski <marcin@python-works.com>
parents:
171
diff
changeset
|
113 @LoginRequired() |
43 | 114 def __before__(self): |
191
b68b2246e5a6
Authenticated controller with LoginRequired decorator, and cleaned __before__ (used in baseController now). fixed User for clone url with logged in session user.
Marcin Kuzminski <marcin@python-works.com>
parents:
171
diff
changeset
|
115 super(AdminController, self).__before__() |
760
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
116 |
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
117 @HasPermissionAllDecorator('hg.admin') |
43 | 118 def index(self): |
2662
91c442a489bb
sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
119 users_log = UserLog.query()\ |
1040
8e49b6ceffe1
fixes fixes fixes ! optimized queries on journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
120 .options(joinedload(UserLog.user))\ |
3062
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
121 .options(joinedload(UserLog.repository)) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
122 |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
123 #FILTERING |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
124 c.search_term = request.GET.get('filter') |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
125 try: |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
126 users_log = _filter(users_log, c.search_term) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
127 except: |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
128 # we want this to crash for now |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
129 raise |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
130 |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
131 users_log = users_log.order_by(UserLog.action_date.desc()) |
1040
8e49b6ceffe1
fixes fixes fixes ! optimized queries on journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
132 |
2845
6b176c679896
failsafe the GET `page` argument
Marcin Kuzminski <marcin@python-works.com>
parents:
2662
diff
changeset
|
133 p = safe_int(request.params.get('page', 1), 1) |
3062
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
134 |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
135 def url_generator(**kw): |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
136 return url.current(filter=c.search_term, **kw) |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
137 |
a08624dd675e
Implemented filtering of admin journal based on Whoosh Query language
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
138 c.users_log = Page(users_log, page=p, items_per_page=10, url=url_generator) |
191
b68b2246e5a6
Authenticated controller with LoginRequired decorator, and cleaned __before__ (used in baseController now). fixed User for clone url with logged in session user.
Marcin Kuzminski <marcin@python-works.com>
parents:
171
diff
changeset
|
139 c.log_data = render('admin/admin_log.html') |
1421
c6b811f11c94
Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
1245
diff
changeset
|
140 |
c6b811f11c94
Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
1245
diff
changeset
|
141 if request.environ.get('HTTP_X_PARTIAL_XHR'): |
191
b68b2246e5a6
Authenticated controller with LoginRequired decorator, and cleaned __before__ (used in baseController now). fixed User for clone url with logged in session user.
Marcin Kuzminski <marcin@python-works.com>
parents:
171
diff
changeset
|
142 return c.log_data |
760
fb7a3b291e64
Cleaned up scm model codes,Admin/admin permissions controller codes
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
143 return render('admin/admin.html') |