in airavata_django_portal_sdk/user_storage/api.py [0:0]
def listdir(request, path, storage_resource_id=None, experiment_id=None):
"""
Return a tuple of two lists, one for directories, the second for files. If
`experiment_id` provided then the path will be relative to the experiment
data directory.
"""
if remoteapi.is_remote_api_configured():
resp = remoteapi.call(request,
"/user-storage/~/",
params={"path": path, "experiment-id": experiment_id},
)
data = resp.json()
for directory in data['directories']:
# Convert JSON ISO8601 timestamp to datetime instance
directory['created_time'] = convert_iso8601_to_datetime(
directory['createdTime'])
directory['modified_time'] = convert_iso8601_to_datetime(
directory['modifiedTime'])
for file in data['files']:
# Convert JSON ISO8601 timestamp to datetime instance
file['created_time'] = convert_iso8601_to_datetime(
file['createdTime'])
file['modified_time'] = convert_iso8601_to_datetime(
file['modifiedTime'])
file['mime_type'] = file['mimeType']
file['data-product-uri'] = file['dataProductURI']
return data['directories'], data['files']
final_path, owner_username = _get_final_path_and_owner_username(request, path, experiment_id)
backend = get_user_storage_provider(request, storage_resource_id=storage_resource_id,
owner_username=owner_username)
directories, files = backend.get_metadata(final_path)
# Mark the TMP_INPUT_FILE_UPLOAD_DIR directory as hidden in the UI
for directory in directories:
directory['hidden'] = directory['path'] == TMP_INPUT_FILE_UPLOAD_DIR
# for each file, lookup or register a data product and enrich the file
# metadata with data-product-uri and mime-type
for file in files:
data_product_uri = _get_data_product_uri(request, file['resource_path'],
storage_resource_id=backend.resource_id,
owner=owner_username,
backend=backend)
data_product = request.airavata_client.getDataProduct(
request.authz_token, data_product_uri)
mime_type = None
if 'mime-type' in data_product.productMetadata:
mime_type = data_product.productMetadata['mime-type']
file['data-product-uri'] = data_product_uri
file['mime_type'] = mime_type
# TODO: remove this, there's no need for hidden files
file['hidden'] = False
return directories, files