diff --git a/lib/galaxy/util/__init__.py b/lib/galaxy/util/__init__.py index 1d72feebf51..ff1cc69b01f 100644 --- a/lib/galaxy/util/__init__.py +++ b/lib/galaxy/util/__init__.py @@ -335,6 +335,17 @@ def shrink_string_by_size( value, size, join_by="..", left_larger=True, beginnin return value +def parse_query_string( query_string ): + if '=' not in query_string: + return {} + retval = {} + arguments = query_string.split( '&' ) + for argument in arguments: + key, value = argument.split( '=' ) + retval[ key ] = value + return retval + + def pretty_print_time_interval( time=False, precise=False ): """ Get a datetime object or a int() Epoch timestamp and return a diff --git a/lib/galaxy/webapps/tool_shed/framework/middleware/hg.py b/lib/galaxy/webapps/tool_shed/framework/middleware/hg.py index cdc1aa56cb2..008fb3c17cb 100644 --- a/lib/galaxy/webapps/tool_shed/framework/middleware/hg.py +++ b/lib/galaxy/webapps/tool_shed/framework/middleware/hg.py @@ -10,6 +10,7 @@ from paste.httpheaders import AUTH_TYPE from paste.httpheaders import REMOTE_USER from galaxy.util import asbool +from galaxy.util import parse_query_string from galaxy.util.hash_util import new_secure_hash from tool_shed.util import hg_util from tool_shed.util import commit_util @@ -49,11 +50,11 @@ class Hg( object ): # a clone or a pull. However, we do not want to increment the times_downloaded count if we're only setting repository # metadata. if cmd == 'getbundle' and not self.setting_repository_metadata: - common, _ = environ[ 'HTTP_X_HGARG_1' ].split( '&' ) + hg_args = parse_query_string( environ[ 'HTTP_X_HGARG_1' ] ) # The 'common' parameter indicates the full sha-1 hash of the changeset the client currently has checked out. If # this is 0000000000000000000000000000000000000000, then the client is performing a fresh checkout. If it has any # other value, the client is getting updates to an existing checkout. - if common == 'common=0000000000000000000000000000000000000000': + if 'common' in hg_args and hg_args[ 'common' ] == '0000000000000000000000000000000000000000': # Increment the value of the times_downloaded column in the repository table for the cloned repository. if 'PATH_INFO' in environ: # Instantiate a database connection