Return-Path: X-Original-To: apmail-allura-commits-archive@www.apache.org Delivered-To: apmail-allura-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6A4D2178FB for ; Mon, 10 Nov 2014 12:04:06 +0000 (UTC) Received: (qmail 80214 invoked by uid 500); 10 Nov 2014 12:04:06 -0000 Delivered-To: apmail-allura-commits-archive@allura.apache.org Received: (qmail 80194 invoked by uid 500); 10 Nov 2014 12:04:06 -0000 Mailing-List: contact commits-help@allura.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@allura.apache.org Delivered-To: mailing list commits@allura.apache.org Received: (qmail 80182 invoked by uid 99); 10 Nov 2014 12:04:06 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 10 Nov 2014 12:04:06 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 0A3518C0630; Mon, 10 Nov 2014 12:04:06 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: jetmind@apache.org To: commits@allura.apache.org Message-Id: <1c0246bc24624de7876cc2a00fe2d184@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: allura git commit: [#7789] ticket:680 Return more fields in ticket API search results Date: Mon, 10 Nov 2014 12:04:06 +0000 (UTC) Repository: allura Updated Branches: refs/heads/ib/7789 [created] 6c5f2fa83 [#7789] ticket:680 Return more fields in ticket API search results Project: http://git-wip-us.apache.org/repos/asf/allura/repo Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/6c5f2fa8 Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/6c5f2fa8 Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/6c5f2fa8 Branch: refs/heads/ib/7789 Commit: 6c5f2fa83ea7ada2fcae91f0bb8bcb18dcad5fae Parents: e9c2d07 Author: Igor Bondarenko Authored: Mon Nov 10 10:56:01 2014 +0000 Committer: Igor Bondarenko Committed: Mon Nov 10 10:56:01 2014 +0000 ---------------------------------------------------------------------- .../forgetracker/tests/functional/test_rest.py | 43 +++++++++++++------- ForgeTracker/forgetracker/tracker_main.py | 10 ++++- 2 files changed, 36 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/allura/blob/6c5f2fa8/ForgeTracker/forgetracker/tests/functional/test_rest.py ---------------------------------------------------------------------- diff --git a/ForgeTracker/forgetracker/tests/functional/test_rest.py b/ForgeTracker/forgetracker/tests/functional/test_rest.py index 455cff5..7c650be 100644 --- a/ForgeTracker/forgetracker/tests/functional/test_rest.py +++ b/ForgeTracker/forgetracker/tests/functional/test_rest.py @@ -191,23 +191,31 @@ class TestRestDiscussion(TestTrackerApiBase): class TestRestSearch(TestTrackerApiBase): + @property + def ticket(self): + return TM.Ticket( + ticket_num=5, + summary='our test ticket', + status='open', + labels=['tiny', 'minor']) + @patch('forgetracker.model.Ticket.paged_search') def test_no_criteria(self, paged_search): - paged_search.return_value = dict(tickets=[ - TM.Ticket(ticket_num=5, summary='our test ticket'), - ]) + paged_search.return_value = dict(tickets=[self.ticket]) r = self.api_get('/rest/p/test/bugs/search') assert_equal(r.status_int, 200) - assert_equal(r.json, {'tickets': [ - {'summary': 'our test ticket', 'ticket_num': 5}, - ]}) + assert_equal(r.json['tickets'][0]['summary'], 'our test ticket') + assert_equal(r.json['tickets'][0]['ticket_num'], 5) + assert_equal(r.json['tickets'][0]['status'], 'open') + assert_equal(r.json['tickets'][0]['labels'], ['tiny', 'minor']) + assert 'description' not in r.json + assert 'discussion_thread' not in r.json @patch('forgetracker.model.Ticket.paged_search') def test_some_criteria(self, paged_search): q = 'labels:testing && status:open' - paged_search.return_value = dict(tickets=[ - TM.Ticket(ticket_num=5, summary='our test ticket'), - ], + paged_search.return_value = dict( + tickets=[self.ticket], sort='status', limit=2, count=1, @@ -217,9 +225,14 @@ class TestRestSearch(TestTrackerApiBase): r = self.api_get('/rest/p/test/bugs/search', q=q, sort='status', limit='2') assert_equal(r.status_int, 200) - assert_equal(r.json, {'limit': 2, 'q': q, 'sort': 'status', 'count': 1, - 'page': 0, 'tickets': [ - {'summary': 'our test ticket', - 'ticket_num': 5}, - ] - }) + assert_equal(r.json['limit'], 2) + assert_equal(r.json['q'], q) + assert_equal(r.json['sort'], 'status') + assert_equal(r.json['count'], 1) + assert_equal(r.json['page'], 0) + assert_equal(r.json['tickets'][0]['summary'], 'our test ticket') + assert_equal(r.json['tickets'][0]['ticket_num'], 5) + assert_equal(r.json['tickets'][0]['status'], 'open') + assert_equal(r.json['tickets'][0]['labels'], ['tiny', 'minor']) + assert 'description' not in r.json + assert 'discussion_thread' not in r.json http://git-wip-us.apache.org/repos/asf/allura/blob/6c5f2fa8/ForgeTracker/forgetracker/tracker_main.py ---------------------------------------------------------------------- diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py index d37b5b1..fd8917e 100644 --- a/ForgeTracker/forgetracker/tracker_main.py +++ b/ForgeTracker/forgetracker/tracker_main.py @@ -1717,10 +1717,16 @@ class RootRestController(BaseController): @expose('json:') def search(self, q=None, limit=100, page=0, sort=None, **kw): + def _convert_ticket(t): + t = t.__json__() + # just pop out all the heavy stuff + for field in ['description', 'discussion_thread']: + t.pop(field, None) + return t + results = TM.Ticket.paged_search( c.app.config, c.user, q, limit, page, sort, show_deleted=False) - results['tickets'] = [dict(ticket_num=t.ticket_num, summary=t.summary) - for t in results['tickets']] + results['tickets'] = map(_convert_ticket, results['tickets']) return results @expose()