in django_airavata/apps/api/serializers.py [0:0]
def get_userHasWriteAccess(self, instance):
request = self.context['request']
# Special handling when using remote API to access user data storage
if hasattr(settings, 'GATEWAY_DATA_STORE_REMOTE_API'):
if "userHasWriteAccess" in instance:
return instance["userHasWriteAccess"]
elif instance.get("isDir", False):
path = Path(instance.get("path", ""))
if path != Path(""):
# get parent directory listing and use that to figure out if
# there is write access to this directory
directories, _ = user_storage.listdir(request, path.parent)
for d in directories:
if Path(d["path"]) == path:
return d.get("userHasWriteAccess", False)
return False
else:
# User always has write access on home directory
return True
else:
return False
is_shared_path = view_utils.is_shared_path(instance["path"])
if is_shared_path:
return request.is_gateway_admin
else:
return True