From 1020d46c52b1fc0fa2effa2882f1fd64216d2c75 Mon Sep 17 00:00:00 2001 From: Martin Cech Date: Mon, 29 Jun 2015 16:51:00 -0400 Subject: [PATCH] fix paging issue with whoosh due to missing str to int conversion --- lib/galaxy/webapps/tool_shed/api/repositories.py | 4 ++++ lib/galaxy/webapps/tool_shed/api/tools.py | 4 ++++ lib/galaxy/webapps/tool_shed/search/repo_search.py | 7 ++++++- lib/galaxy/webapps/tool_shed/search/tool_search.py | 7 ++++++- 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/webapps/tool_shed/api/repositories.py b/lib/galaxy/webapps/tool_shed/api/repositories.py index 3424cd2ac4f..55f04a4cf48 100644 --- a/lib/galaxy/webapps/tool_shed/api/repositories.py +++ b/lib/galaxy/webapps/tool_shed/api/repositories.py @@ -357,6 +357,10 @@ class RepositoriesController( BaseAPIController ): q = kwd.get( 'q', '' ) if q: page = kwd.get( 'page', 1 ) + try: + page = int( page ) + except ValueError: + raise RequestParameterInvalidException( 'The "page" requested has to be an integer.' ) return_jsonp = util.asbool( kwd.get( 'jsonp', False ) ) callback = kwd.get( 'callback', 'callback' ) search_results = self._search( trans, q, page ) diff --git a/lib/galaxy/webapps/tool_shed/api/tools.py b/lib/galaxy/webapps/tool_shed/api/tools.py index d2109221f27..19b48ae68c9 100644 --- a/lib/galaxy/webapps/tool_shed/api/tools.py +++ b/lib/galaxy/webapps/tool_shed/api/tools.py @@ -46,6 +46,10 @@ class ToolsController( BaseAPIController ): raise NotImplemented( 'Listing of all the tools is not implemented. Provide parameter "q" to search instead.' ) else: page = kwd.get( 'page', 1 ) + try: + page = int( page ) + except ValueError: + raise RequestParameterInvalidException( 'The "page" requested has to be an integer.' ) return_jsonp = util.asbool( kwd.get( 'jsonp', False ) ) callback = kwd.get( 'callback', 'callback' ) search_results = self._search( trans, q, page ) diff --git a/lib/galaxy/webapps/tool_shed/search/repo_search.py b/lib/galaxy/webapps/tool_shed/search/repo_search.py index a6a295e5dc6..bf59bcf69b3 100644 --- a/lib/galaxy/webapps/tool_shed/search/repo_search.py +++ b/lib/galaxy/webapps/tool_shed/search/repo_search.py @@ -3,6 +3,7 @@ import datetime from galaxy import exceptions from galaxy import eggs from galaxy.webapps.tool_shed import model +from galaxy.exceptions import ObjectNotFound import logging log = logging.getLogger( __name__ ) @@ -100,7 +101,11 @@ class RepoSearch( object ): 'repo_owner_username' ], schema = schema ) user_query = parser.parse( '*' + search_term + '*' ) - hits = searcher.search_page( user_query, page, pagelen = 10, terms = True ) + + try: + hits = searcher.search_page( user_query, page, pagelen = 10, terms = True ) + except ValueError: + raise ObjectNotFound( 'The requested page does not exist.' ) log.debug( 'searching for: #' + str( search_term ) ) log.debug( 'total hits: ' + str( len( hits ) ) ) diff --git a/lib/galaxy/webapps/tool_shed/search/tool_search.py b/lib/galaxy/webapps/tool_shed/search/tool_search.py index c829932b6ae..e49820ca1d9 100644 --- a/lib/galaxy/webapps/tool_shed/search/tool_search.py +++ b/lib/galaxy/webapps/tool_shed/search/tool_search.py @@ -6,6 +6,7 @@ from galaxy import exceptions from galaxy import eggs from galaxy import web from galaxy.webapps.tool_shed import model +from galaxy.exceptions import ObjectNotFound eggs.require( "Whoosh" ) import whoosh.index from whoosh import scoring @@ -60,7 +61,11 @@ class ToolSearch( object ): 'repo_owner_username' ], schema = tool_schema ) user_query = parser.parse( '*' + search_term + '*' ) - hits = searcher.search_page( user_query, page, pagelen = 10, terms = True ) + + try: + hits = searcher.search_page( user_query, page, pagelen = 10, terms = True ) + except ValueError: + raise ObjectNotFound( 'The requested page does not exist.' ) log.debug( 'searching tools for: #' + str( search_term ) ) log.debug( 'total hits: ' + str( len( hits ) ) )