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

[14/28] git commit: [#2835] ticket:292 Better search for discussion

[#2835] ticket:292 Better search for discussion


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

Branch: refs/heads/db/2835
Commit: 91e308c6375731f5d61dc64fb462fa2156870a8a
Parents: b636c9d
Author: Igor Bondarenko <je...@gmail.com>
Authored: Mon Mar 25 12:54:06 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Wed Apr 24 16:34:41 2013 +0000

----------------------------------------------------------------------
 Allura/allura/model/artifact.py                    |    4 +-
 Allura/allura/model/discuss.py                     |    4 +-
 .../forgediscussion/controllers/root.py            |   62 ++++++---------
 .../templates/discussionforums/search.html         |    4 +-
 4 files changed, 33 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/91e308c6/Allura/allura/model/artifact.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/artifact.py b/Allura/allura/model/artifact.py
index 49109c7..681ac26 100644
--- a/Allura/allura/model/artifact.py
+++ b/Allura/allura/model/artifact.py
@@ -332,8 +332,8 @@ class Snapshot(Artifact):
         if original:
             original_index = original.index()
             result.update(original_index)
-            result['title'] = 'Version %d of %s' % (
-                    self.version, h.get_first(original_index, 'title'))
+            result['title'] = '%s (version %d)' % (
+                    h.get_first(original_index, 'title'), self.version)
         result.update(
             id=self.index_id(),
             version_i=self.version,

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/91e308c6/Allura/allura/model/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py
index 76a9aa1..e3cf591 100644
--- a/Allura/allura/model/discuss.py
+++ b/Allura/allura/model/discuss.py
@@ -107,7 +107,7 @@ class Discussion(Artifact, ActivityObject):
     def index(self):
         result = Artifact.index(self)
         result.update(
-            title='Discussion: %s' % self.name,
+            title=self.name,
             name_s=self.name,
             text=self.description)
         return result
@@ -356,7 +356,7 @@ class Thread(Artifact, ActivityObject):
     def index(self):
         result = Artifact.index(self)
         result.update(
-           title='Thread: %s' % (self.subject or '(no subject)'),
+           title=self.subject or '(no subject)',
            name_s=self.subject,
            views_i=self.num_views,
            text=self.subject)

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/91e308c6/ForgeDiscussion/forgediscussion/controllers/root.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/controllers/root.py b/ForgeDiscussion/forgediscussion/controllers/root.py
index cce0090..f5f4ae5 100644
--- a/ForgeDiscussion/forgediscussion/controllers/root.py
+++ b/ForgeDiscussion/forgediscussion/controllers/root.py
@@ -15,11 +15,10 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-import re
 import json
 import logging
-import pymongo
-from urllib import urlencode, unquote
+from urllib import unquote
+from itertools import imap
 
 from tg import expose, validate, redirect, flash, response
 from tg.decorators import with_trailing_slash
@@ -31,7 +30,7 @@ from webob import exc
 
 from allura.lib.security import require_access, has_access, require_authenticated
 from allura.model import Feed
-from allura.lib.search import search, SearchError
+from allura.lib.search import search_app
 from allura.lib import helpers as h
 from allura.lib.utils import AntiSpam
 from allura.lib.decorators import require_post
@@ -130,40 +129,31 @@ class RootController(BaseController, DispatchIndex):
                    project=validators.StringBool(if_empty=False),
                    limit=validators.Int(if_empty=None),
                    page=validators.Int(if_empty=0)))
-    def search(self, q=None, history=False, project=False, limit=None, page=0, **kw):
-        'local tool search'
-        if project:
-            redirect(c.project.url() + 'search?' + urlencode(dict(q=q, history=history)))
-        results = []
-        search_error = None
-        count=0
-        limit, page, start = g.handle_paging(limit, page, default=25)
-        if not q:
-            q = ''
-        else:
-            try:
-                results = search(
-                    q, rows=limit, start=start,
-                    fq=[
-                        'is_history_b:%s' % history,
-                        'project_id_s:%s' % c.project._id,
-                        'mount_point_s:%s'% c.app.config.options.mount_point,
-                        '-deleted_b:true'],
-                    short_timeout=True,
-                    ignore_errors=False)
-            except SearchError as e:
-                search_error = e
-            if results: count=results.hits
+    def search(self, q=None, history=None, project=None, limit=None, page=0, **kw):
         c.search_results = self.W.search_results
+        search_params = kw
+        search_params.update({
+            'q': q or '',
+            'history': history,
+            'project': project,
+            'limit': limit,
+            'page': page,
+            'allowed_types': ['Post', 'Post Snapshot', 'Discussion', 'Thread'],
+        })
+        d = search_app(**search_params)
+        results = d.get('results')
+        def prettify_urls(doc):
+            if doc.get('type_s', '') == 'Post':
+                _id = doc.get('id').split('#')
+                _id = _id[-1].replace('/', '.') if _id else ''
+                p = model.ForumPost.query.get(_id=_id)
+                doc['url_paginated'] = p.url_paginated()
+            return doc
         if results is not None:
-            for doc in results:
-                if doc.get('type_s', '') == 'Post':
-                    _id = doc.get('id').split('#')
-                    _id = _id[-1].replace('/', '.') if _id else ''
-                    p = model.ForumPost.query.get(_id=_id)
-                    doc['url_paginated'] = p.url_paginated()
-        return dict(q=q, history=history, results=results or [],
-                    count=count, limit=limit, page=page, search_error=search_error)
+            results = imap(prettify_urls, results)
+        d['results'] = results
+        d['search_comments_disable'] = True
+        return d
 
     @expose('jinja:allura:templates/markdown_syntax.html')
     def markdown_syntax(self):

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/91e308c6/ForgeDiscussion/forgediscussion/templates/discussionforums/search.html
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/templates/discussionforums/search.html b/ForgeDiscussion/forgediscussion/templates/discussionforums/search.html
index 4c549cd..0fdb640 100644
--- a/ForgeDiscussion/forgediscussion/templates/discussionforums/search.html
+++ b/ForgeDiscussion/forgediscussion/templates/discussionforums/search.html
@@ -24,5 +24,7 @@
 
 {% block content %}
   {{c.search_results.display(results=results,q=q,history=history,
-                             count=count,limit=limit,page=page,search_error=search_error)}}
+     count=count,limit=limit,page=page,search_error=search_error,
+     sort_score_url=sort_score_url, sort_date_url=sort_date_url, sort_field=sort_field,
+     search_comments_disable=search_comments_disable)}}
 {% endblock %}