in django_airavata/apps/api/views.py [0:0]
def get_instance(self, lookup_value):
users = {}
# Only load *directly* granted permissions since these are the only
# ones that can be edited
# Load accessible users in order of permission precedence: users that
# have WRITE permission should also have READ
users.update(self._load_directly_accessible_users(
lookup_value, ResourcePermissionType.READ))
users.update(self._load_directly_accessible_users(
lookup_value, ResourcePermissionType.WRITE))
users.update(self._load_directly_accessible_users(
lookup_value, ResourcePermissionType.MANAGE_SHARING))
owner_ids = self._load_directly_accessible_users(
lookup_value, ResourcePermissionType.OWNER)
# Assume that there is one and only one DIRECT owner (there may be one
# or more INDIRECT cascading owners, which would the owners of the
# ancestor entities, but getAllDirectlyAccessibleUsers does not return
# indirectly cascading owners)
owner_id = list(owner_ids.keys())[0]
# Remove owner from the users list
del users[owner_id]
user_list = []
for user_id in users:
user_list.append({'user': self._load_user_profile(user_id),
'permissionType': users[user_id]})
groups = {}
groups.update(self._load_directly_accessible_groups(
lookup_value, ResourcePermissionType.READ))
groups.update(self._load_directly_accessible_groups(
lookup_value, ResourcePermissionType.WRITE))
groups.update(self._load_directly_accessible_groups(
lookup_value, ResourcePermissionType.MANAGE_SHARING))
group_list = []
for group_id in groups:
group_list.append({'group': self._load_group(group_id),
'permissionType': groups[group_id]})
return {'entityId': lookup_value,
'userPermissions': user_list,
'groupPermissions': group_list,
'owner': self._load_user_profile(owner_id)}