diff --git a/lib/galaxy/tools/parameters/grouping.py b/lib/galaxy/tools/parameters/grouping.py index 054b2cd5bb5..683feaabbc1 100644 --- a/lib/galaxy/tools/parameters/grouping.py +++ b/lib/galaxy/tools/parameters/grouping.py @@ -209,7 +209,7 @@ class UploadDataset( Group ): dataset_name = get_file_name( data_file['filename'] ) if not dataset_info: dataset_info = 'uploaded file' - return Bunch( type='file', path=data_file['local_filename'], name=get_file_name( data_file['filename'] ) ) + return Bunch( type='file', path=data_file['local_filename'], name=dataset_name ) #return 'file', data_file['local_filename'], get_file_name( data_file.filename ), dataset_name, dataset_info except: # The uploaded file should've been persisted by the upload tool action @@ -227,14 +227,13 @@ class UploadDataset( Group ): if line: if not line.lower().startswith( 'http://' ) and not line.lower().startswith( 'ftp://' ) and not line.lower().startswith( 'https://' ): continue # non-url line, ignore - precreated_name = line dataset_name = override_name if not dataset_name: dataset_name = line dataset_info = override_info if not dataset_info: dataset_info = 'uploaded url' - yield Bunch( type='url', path=line, name=precreated_name ) + yield Bunch( type='url', path=line, name=dataset_name ) #yield ( 'url', line, precreated_name, dataset_name, dataset_info ) else: dataset_name = dataset_info = precreated_name = 'Pasted Entry' #we need to differentiate between various url pastes here diff --git a/lib/galaxy/webapps/galaxy/api/tools.py b/lib/galaxy/webapps/galaxy/api/tools.py index e93c0b9ca09..e2bd2f634e2 100644 --- a/lib/galaxy/webapps/galaxy/api/tools.py +++ b/lib/galaxy/webapps/galaxy/api/tools.py @@ -55,6 +55,17 @@ class ToolsController( BaseAPIController, UsesVisualizationMixin ): tool = trans.app.toolbox.get_tool( tool_id ) if not tool: return { "message": { "type": "error", "text" : messages.NO_TOOL } } + + # Set running history from payload parameters. + # History not set correctly as part of this API call for + # dataset upload. + history_id = payload.get("history_id", None) + if history_id: + target_history = trans.sa_session.query(trans.app.model.History).get( + trans.security.decode_id(history_id)) + trans.galaxy_session.current_history = target_history + else: + target_history = None # Set up inputs. inputs = payload[ 'inputs' ] @@ -62,10 +73,10 @@ class ToolsController( BaseAPIController, UsesVisualizationMixin ): inputs['runtool_btn'] = 'Execute' # TODO: encode data ids and decode ids. params = util.Params( inputs, sanitize = False ) - template, vars = tool.handle_input( trans, params.__dict__ ) - + template, vars = tool.handle_input( trans, params.__dict__, history=target_history) + # TODO: check for errors and ensure that output dataset(s) are available. - output_datasets = vars[ 'out_data' ].values() + output_datasets = vars.get('out_data', {}).values() rval = { "outputs": [] } diff --git a/tools/data_source/upload.xml b/tools/data_source/upload.xml index 3211ff2f2b2..a5fbfe147c5 100644 --- a/tools/data_source/upload.xml +++ b/tools/data_source/upload.xml @@ -41,6 +41,7 @@ +