in django_airavata/apps/api/serializers.py [0:0]
def update(self, instance, validated_data):
# Compute lists of ids to grant/revoke READ/WRITE/MANAGE_SHARING
# permission
existing_user_permissions = {
user['user'].airavataInternalUserId: user['permissionType']
for user in instance['userPermissions']}
new_user_permissions = {
user['user']['airavataInternalUserId']:
user['permissionType']
for user in validated_data['userPermissions']}
(
user_grant_read_permission,
user_grant_write_permission,
user_grant_manage_sharing_permission,
user_revoke_read_permission,
user_revoke_write_permission,
user_revoke_manage_sharing_permission) = self._compute_all_revokes_and_grants(
existing_user_permissions,
new_user_permissions)
existing_group_permissions = {
group['group'].id: group['permissionType']
for group in instance['groupPermissions']}
new_group_permissions = {
group['group']['id']: group['permissionType']
for group in validated_data['groupPermissions']}
(
group_grant_read_permission,
group_grant_write_permission,
group_grant_manage_sharing_permission,
group_revoke_read_permission,
group_revoke_write_permission,
group_revoke_manage_sharing_permission) = self._compute_all_revokes_and_grants(
existing_group_permissions,
new_group_permissions)
instance['_user_grant_read_permission'] = user_grant_read_permission
instance['_user_grant_write_permission'] = user_grant_write_permission
instance['_user_grant_manage_sharing_permission'] = user_grant_manage_sharing_permission
instance['_user_revoke_read_permission'] = user_revoke_read_permission
instance['_user_revoke_write_permission'] = user_revoke_write_permission
instance['_user_revoke_manage_sharing_permission'] = user_revoke_manage_sharing_permission
instance['_group_grant_read_permission'] = group_grant_read_permission
instance['_group_grant_write_permission'] = group_grant_write_permission
instance['_group_grant_manage_sharing_permission'] = group_grant_manage_sharing_permission
instance['_group_revoke_read_permission'] = group_revoke_read_permission
instance['_group_revoke_write_permission'] = group_revoke_write_permission
instance['_group_revoke_manage_sharing_permission'] = group_revoke_manage_sharing_permission
instance['userPermissions'] = [
{'user': UserProfile(**data['user']),
'permissionType': data['permissionType']}
for data in validated_data.get(
'userPermissions', instance['userPermissions'])]
instance['groupPermissions'] = [
{'group': GroupModel(**data['group']),
'permissionType': data['permissionType']}
for data in validated_data.get('groupPermissions', instance['groupPermissions'])]
return instance