in airavata_django_portal_sdk/user_storage/api.py [0:0]
def save(request, path, file, name=None, content_type=None, storage_resource_id=None, experiment_id=None):
"""
Save file in path in the user's storage and return DataProduct. If
`experiment_id` provided then the path will be relative to the experiment
data directory.
"""
if remoteapi.is_remote_api_configured():
if name is None and hasattr(file, 'name'):
name = os.path.basename(file.name)
files = {'file': (name, file, content_type)
if content_type is not None else (name, file)}
resp = remoteapi.call(request,
"/user-storage/~/{path}",
path_params={"path": path},
data={"experiment-id": experiment_id},
method="post",
files=files)
data = resp.json()
product_uri = data['uploaded']['productUri']
data_product = request.airavata_client.getDataProduct(
request.authz_token, product_uri)
return data_product
final_path = _get_final_path(request, path, experiment_id)
backend = get_user_storage_provider(request, storage_resource_id=storage_resource_id)
storage_resource_id, resource_path = backend.save(final_path, file, name=name, content_type=content_type)
data_product = _save_data_product(
request, resource_path, storage_resource_id, name=name, content_type=content_type, backend=backend
)
return data_product