in django_airavata/apps/api/output_views.py [0:0]
def _generate_data(request,
output_view_provider,
experiment_output,
experiment,
test_mode=False,
**kwargs):
output_files = []
# test_mode can only be used in DEBUG=True mode
if test_mode and settings.DEBUG:
test_output_file = getattr(output_view_provider,
'test_output_file',
None)
if test_output_file is None:
raise Exception(f"test_output_file is not set on {output_view_provider}")
logger.info(f"Using {test_output_file} instead of regular output file")
output_file = open(test_output_file, 'rb')
output_files.append(output_file)
elif (experiment_output.value and
experiment_output.type in (DataType.URI,
DataType.URI_COLLECTION,
DataType.STDOUT,
DataType.STDERR) and
experiment_output.value.startswith("airavata-dp")):
data_product_uris = experiment_output.value.split(",")
data_products = map(lambda dpid:
request.airavata_client.getDataProduct(request.authz_token,
dpid),
data_product_uris)
for data_product in data_products:
if user_storage.exists(request, data_product):
output_file = user_storage.open_file(request, data_product)
output_files.append(output_file)
generate_data_func = output_view_provider.generate_data
method_sig = inspect.signature(generate_data_func)
if 'output_files' in method_sig.parameters:
generate_data_func = partial(generate_data_func, output_files=output_files)
# TODO: convert experiment and experiment_output to dict/JSON
data = generate_data_func(request,
experiment_output,
experiment,
output_file=output_files[0] if len(output_files) > 0 else None,
**kwargs)
_process_interactive_params(data)
return data