You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2013/04/12 19:08:57 UTC

[2/4] git commit: [#4504] ticket:311 Replace $USER with actual username in a search query

[#4504] ticket:311 Replace $USER with actual username in a search query


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/f8c30d49
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/f8c30d49
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/f8c30d49

Branch: refs/heads/master
Commit: f8c30d4909cbadd3c27c64867ae78d0888e8cd19
Parents: 6f04547
Author: Igor Bondarenko <je...@gmail.com>
Authored: Tue Apr 9 14:45:13 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Fri Apr 12 17:07:49 2013 +0000

----------------------------------------------------------------------
 Allura/allura/lib/search.py         |    7 +++++++
 Allura/allura/tests/test_helpers.py |   13 +++++++++++++
 2 files changed, 20 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/f8c30d49/Allura/allura/lib/search.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/search.py b/Allura/allura/lib/search.py
index a428c53..89d1d6e 100644
--- a/Allura/allura/lib/search.py
+++ b/Allura/allura/lib/search.py
@@ -22,7 +22,14 @@ def solarize(obj):
 class SearchError(SolrError):
     pass
 
+def inject_user(q, user=None):
+    '''Replace $USER with current user's name.'''
+    if user is None:
+        user = c.user
+    return q.replace('$USER', user.username) if q else q
+
 def search(q,short_timeout=False,ignore_errors=True,**kw):
+    q = inject_user(q)
     try:
         if short_timeout:
             return g.solr_short_timeout.search(q, **kw)

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/f8c30d49/Allura/allura/tests/test_helpers.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/test_helpers.py b/Allura/allura/tests/test_helpers.py
index 2e80b56..8a7065f 100644
--- a/Allura/allura/tests/test_helpers.py
+++ b/Allura/allura/tests/test_helpers.py
@@ -7,6 +7,7 @@ from nose.tools import eq_, assert_equals
 
 from allura import model as M
 from allura.lib import helpers as h
+from allura.lib.search import inject_user
 from allura.tests import decorators as td
 from alluratest.controller import setup_basic_test
 
@@ -185,3 +186,15 @@ def test_get_first():
     assert_equals(h.get_first({'title': ['Value']}, 'title'), 'Value')
     assert_equals(h.get_first({'title': []}, 'title'), None)
     assert_equals(h.get_first({'title': ['Value']}, 'title'), 'Value')
+
+@patch('allura.lib.search.c')
+def test_inject_user(context):
+    user = Mock(username='user01')
+    assert_equals(inject_user(None, user), None)
+    assert_equals(inject_user('', user), '')
+    assert_equals(inject_user('query', user), 'query')
+    result = inject_user('reported_by_s:$USER OR assigned_to_s:$USER', user)
+    assert_equals(result, 'reported_by_s:user01 OR assigned_to_s:user01')
+    context.user = Mock(username='admin1')
+    result = inject_user('reported_by_s:$USER OR assigned_to_s:$USER')
+    assert_equals(result, 'reported_by_s:admin1 OR assigned_to_s:admin1')