From bd8ee3da615eade07451fe7b145669a89cc1efed Mon Sep 17 00:00:00 2001 From: guerler Date: Sat, 2 May 2015 16:28:05 -0400 Subject: [PATCH 1/5] Generate base url on client request --- lib/galaxy/tools/parameters/basic.py | 32 +++++----------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index c689005ec22..f825b2223a1 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -671,41 +671,19 @@ class ColorToolParameter( ToolParameter ): def get_initial_value( self, trans, context, history=None ): return self.value.lower(); -## This is clearly a HACK, parameters should only be used for things the user -## can change, there needs to be a different way to specify this. I'm leaving -## it for now to avoid breaking any tools. - -class BaseURLToolParameter( ToolParameter ): +class BaseURLToolParameter( HiddenToolParameter ): """ - Returns a parameter the contains its value prepended by the + Returns a parameter that contains its value prepended by the current server base url. Used in all redirects. """ - def __init__( self, tool, input_source ): input_source = ensure_input_source( input_source ) - ToolParameter.__init__( self, tool, input_source ) + super( BaseURLToolParameter, self ).__init__( tool, input_source ) self.value = input_source.get( 'value', '' ) - def get_value( self, trans ): - # url = trans.request.base + self.value - url = url_for( self.value, qualified=True ) - return url - - def get_html_field( self, trans=None, value=None, other_values={} ): - return form_builder.HiddenField( self.name, self.get_value( trans ) ) - - def get_initial_value( self, trans, context, history=None ): - return self.get_value( trans ) - - def get_label( self ): - # BaseURLToolParameters are ultimately "hidden" parameters - return None - - def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ): - d = super( BaseURLToolParameter, self ).to_dict( trans ) - d['value'] = self.get_value( trans ) - return d + def from_html( self, value=None, trans=None, context={} ): + return url_for( self.value, qualified=True ) DEFAULT_VALUE_MAP = lambda x: x From 62abcd0b744d2c80ccc231fc61039e442fef70ce Mon Sep 17 00:00:00 2001 From: guerler Date: Tue, 5 May 2015 14:07:24 -0400 Subject: [PATCH 2/5] Create empty history if history is unavailable during api call --- lib/galaxy/tools/parameters/basic.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index c689005ec22..19d89edd797 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -1657,6 +1657,8 @@ class BaseDataToolParameter( ToolParameter ): assert trans is not None, "%s requires a trans" % class_name if history is None: history = trans.get_history() + if history is None: + history = trans.get_history( create=True ) assert history is not None, "%s requires a history" % class_name return history From 9ebf6912d6f7b12148b9eb033845ed4d05e35e6d Mon Sep 17 00:00:00 2001 From: guerler Date: Tue, 5 May 2015 15:44:29 -0400 Subject: [PATCH 3/5] Remove unnecessary lines --- lib/galaxy/tools/parameters/basic.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index 19d89edd797..91dc7872118 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -1655,8 +1655,6 @@ class BaseDataToolParameter( ToolParameter ): def _get_history( self, trans, history=None ): class_name = self.__class__.__name__ assert trans is not None, "%s requires a trans" % class_name - if history is None: - history = trans.get_history() if history is None: history = trans.get_history( create=True ) assert history is not None, "%s requires a history" % class_name From f0f2f397ff1fb75f07d44fb8beb40de32fbc9df8 Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 6 May 2015 09:26:37 -0400 Subject: [PATCH 4/5] Fix test cases --- test/unit/tools/test_data_parameters.py | 2 +- test/unit/tools/test_execution.py | 2 +- test/unit/unittest_utils/galaxy_mock.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/unit/tools/test_data_parameters.py b/test/unit/tools/test_data_parameters.py index bf005a90458..062ace3551d 100644 --- a/test/unit/tools/test_data_parameters.py +++ b/test/unit/tools/test_data_parameters.py @@ -150,7 +150,7 @@ class DataToolParameterTestCase( BaseParameterTestCase ): self.app.model.context.flush() self.trans = bunch.Bunch( app=self.app, - get_history=lambda: self.test_history, + get_history=lambda **k: self.test_history, get_current_user_roles=lambda: [], workflow_building_mode=False, webapp=bunch.Bunch( name="galaxy" ), diff --git a/test/unit/tools/test_execution.py b/test/unit/tools/test_execution.py index 25890b3fd13..cab7989e85b 100644 --- a/test/unit/tools/test_execution.py +++ b/test/unit/tools/test_execution.py @@ -478,7 +478,7 @@ class MockTrans( object ): self.webapp = Bunch( name="galaxy" ) self.sa_session = self.app.model.context - def get_history( self ): + def get_history( self, **kwargs ): return self.history diff --git a/test/unit/unittest_utils/galaxy_mock.py b/test/unit/unittest_utils/galaxy_mock.py index b06f65f61c4..128dbfde385 100644 --- a/test/unit/unittest_utils/galaxy_mock.py +++ b/test/unit/unittest_utils/galaxy_mock.py @@ -91,7 +91,7 @@ class MockTrans( object ): user = property( get_user, set_user ) - def get_history( self ): + def get_history( self, **kwargs ): return self.history def set_history( self, history ): From 281233f7e5bb7bfe9f5ed43e29576e74863f888c Mon Sep 17 00:00:00 2001 From: Nate Coraor Date: Wed, 6 May 2015 14:15:16 -0400 Subject: [PATCH 5/5] Fix Pulsar remote staging that I broke when adding nginx_upload_module support in #110. --- lib/galaxy/jobs/runners/pulsar.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/jobs/runners/pulsar.py b/lib/galaxy/jobs/runners/pulsar.py index 763e41c9a21..cbf2405fcfe 100644 --- a/lib/galaxy/jobs/runners/pulsar.py +++ b/lib/galaxy/jobs/runners/pulsar.py @@ -342,7 +342,7 @@ class PulsarJobRunner( AsynchronousJobRunner ): encoded_job_id = self.app.security.encode_id(job_id) job_key = self.app.security.encode_id( job_id, kind="jobs_files" ) - endpoint_base = "%s/api/jobs/%s?job_key=%s" + endpoint_base = "%s/api/jobs/%s/files?job_key=%s" if self.app.config.nginx_upload_job_files_path: endpoint_base = "%s" + \ self.app.config.nginx_upload_job_files_path + \