aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Kuzminski <marcin@python-works.com>2012-12-07 01:04:17 +0100
committerMarcin Kuzminski <marcin@python-works.com>2012-12-07 01:04:17 +0100
commite28d3cfaa47621cb72227a4601917106df3857eb (patch)
tree500737242e6f5cfbd9b7293fbead36a9549d62ee
parent01055a67d1840422ba10f0718b363518c30ba96a (diff)
fixed tests, made the journal filter consistent accross different databases
--HG-- branch : beta
-rw-r--r--rhodecode/controllers/admin/admin.py10
-rw-r--r--rhodecode/tests/functional/test_admin.py21
2 files changed, 26 insertions, 5 deletions
diff --git a/rhodecode/controllers/admin/admin.py b/rhodecode/controllers/admin/admin.py
index 32444fbb..9e3b07eb 100644
--- a/rhodecode/controllers/admin/admin.py
+++ b/rhodecode/controllers/admin/admin.py
@@ -30,7 +30,7 @@ from sqlalchemy.orm import joinedload
from webhelpers.paginate import Page
from whoosh.qparser.default import QueryParser
from whoosh import query
-from sqlalchemy.sql.expression import or_, and_
+from sqlalchemy.sql.expression import or_, and_, func
from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
from rhodecode.lib.base import BaseController, render
@@ -63,12 +63,12 @@ def _journal_filter(user_log, search_term):
if wc_term.startswith('*') and not wc_term.endswith('*'):
#postfix == endswith
wc_term = remove_prefix(wc_term, prefix='*')
- return getattr(col, 'endswith')(wc_term)
+ return func.lower(col).endswith(wc_term)
elif wc_term.startswith('*') and wc_term.endswith('*'):
#wildcard == ilike
wc_term = remove_prefix(wc_term, prefix='*')
wc_term = remove_suffix(wc_term, suffix='*')
- return getattr(col, 'contains')(wc_term)
+ return func.lower(col).contains(wc_term)
def get_filterion(field, val, term):
@@ -88,10 +88,10 @@ def _journal_filter(user_log, search_term):
if isinstance(term, query.Wildcard):
return wildcard_handler(field, val)
elif isinstance(term, query.Prefix):
- return field.startswith(val)
+ return func.lower(field).startswith(func.lower(val))
elif isinstance(term, query.DateRange):
return and_(field >= val[0], field <= val[1])
- return field == val
+ return func.lower(field) == func.lower(val)
if isinstance(qry, (query.And, query.Term, query.Prefix, query.Wildcard,
query.DateRange)):
diff --git a/rhodecode/tests/functional/test_admin.py b/rhodecode/tests/functional/test_admin.py
index d4028113..4bb9c8e9 100644
--- a/rhodecode/tests/functional/test_admin.py
+++ b/rhodecode/tests/functional/test_admin.py
@@ -24,6 +24,9 @@ class TestAdminController(TestController):
v = safe_unicode(v)
if k == 'action_date':
v = datetime.datetime.strptime(v, '%Y-%m-%d %H:%M:%S.%f')
+ if k in ['user_id', 'repository_id']:
+ #nullable due to FK problems
+ v = None
setattr(ul, k, v)
Session().add(ul)
Session().commit()
@@ -49,6 +52,12 @@ class TestAdminController(TestController):
filter='repository:rhodecode'))
response.mustcontain('3 entries')
+ def test_filter_journal_filter_exact_match_on_repository_CamelCase(self):
+ self.log_user()
+ response = self.app.get(url(controller='admin/admin', action='index',
+ filter='repository:RhodeCode'))
+ response.mustcontain('3 entries')
+
def test_filter_journal_filter_wildcard_on_repository(self):
self.log_user()
response = self.app.get(url(controller='admin/admin', action='index',
@@ -61,6 +70,12 @@ class TestAdminController(TestController):
filter='repository:test*'))
response.mustcontain('257 entries')
+ def test_filter_journal_filter_prefix_on_repository_CamelCase(self):
+ self.log_user()
+ response = self.app.get(url(controller='admin/admin', action='index',
+ filter='repository:Test*'))
+ response.mustcontain('257 entries')
+
def test_filter_journal_filter_prefix_on_repository_and_user(self):
self.log_user()
response = self.app.get(url(controller='admin/admin', action='index',
@@ -79,6 +94,12 @@ class TestAdminController(TestController):
filter='username:demo'))
response.mustcontain('1087 entries')
+ def test_filter_journal_filter_exact_match_on_username_camelCase(self):
+ self.log_user()
+ response = self.app.get(url(controller='admin/admin', action='index',
+ filter='username:DemO'))
+ response.mustcontain('1087 entries')
+
def test_filter_journal_filter_wildcard_on_username(self):
self.log_user()
response = self.app.get(url(controller='admin/admin', action='index',