def delete(self, request, pk): """ Delete a blob Args: request: pk: Returns: """ try: # Get object blob_object = self.get_object(pk) # Check rights if request.user.is_superuser is False and str(request.user.id) != blob_object.user_id: return Response(status=status.HTTP_403_FORBIDDEN) # delete object blob_api.delete(blob_object) return Response(status=status.HTTP_204_NO_CONTENT) except Http404: content = {'message': 'Blob not found.'} return Response(content, status=status.HTTP_404_NOT_FOUND) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def test_delete_own_blob_in_not_accessible_workspace_deletes_blob( self, get_all_workspaces_with_write_access_by_user): mock_user = _create_user('1') get_all_workspaces_with_write_access_by_user.return_value = [] blob_api.delete( fixture_blob.blob_collection[fixture_blob.USER_1_WORKSPACE_1], mock_user)
def patch(self, request): """ Delete a list of Blob Parameters: [ { "id": "blob_id", }, { "id": "blob_id", } ] Args: request: HTTP request Returns: - code: 204 content: Deletion succeed - code: 400 content: Validation error - code: 403 content: Authentication error - code: 500 content: Internal server error """ try: # Serialize data serializer = DeleteBlobsSerializer(data=request.data, many=True, context={'request': request}) # Validate data serializer.is_valid(True) # Get list of unique ids blob_ids = set([blob['id'] for blob in serializer.validated_data]) for blob_id in blob_ids: # Get blob with its id blob = blob_api.get_by_id(blob_id) # Delete blob blob_api.delete(blob) # Return the serialized data return Response(status=status.HTTP_204_NO_CONTENT) except ValidationError as validation_exception: content = {'message': validation_exception.detail} return Response(content, status=status.HTTP_400_BAD_REQUEST) except AccessControlError as access_control_error: content = {'message': access_control_error.message} return Response(content, status=status.HTTP_403_FORBIDDEN) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def test_delete_others_blob_not_in_workspace_raises_error( self, get_all_workspaces_with_write_access_by_user): mock_user = _create_user('1') get_all_workspaces_with_write_access_by_user.return_value = [] with self.assertRaises(AccessControlError): blob_api.delete( fixture_blob.blob_collection[fixture_blob.USER_2_NO_WORKSPACE], mock_user)
def test_delete_others_blob_in_accessible_workspace_deletes_blob( self, get_all_workspaces_with_write_access_by_user): mock_user = _create_user("1") get_all_workspaces_with_write_access_by_user.return_value = [ fixture_blob.workspace_2 ] blob_api.delete( fixture_blob.blob_collection[fixture_blob.USER_2_WORKSPACE_2], mock_user)
def patch(self, request): """ Delete a list of blobs. /rest/blobs/delete/ Data: [{"id":"<blob_id>"},{"id":"<blob_id>"}] Args: request: Returns: """ try: # Serialize data serializer = DeleteBlobsSerializer(data=request.data, many=True, context={'request': request}) # Validate data serializer.is_valid(True) # Get list of unique ids blob_ids = set([blob['id'] for blob in serializer.validated_data]) for blob_id in blob_ids: # Get blob with its id blob = blob_api.get_by_id(blob_id) # Delete blob blob_api.delete(blob) # Return the serialized data return Response(status=status.HTTP_204_NO_CONTENT) except ValidationError as validation_exception: content = {'message': validation_exception.detail} return Response(content, status=status.HTTP_400_BAD_REQUEST) except AccessControlError as access_control_error: content = {'message': access_control_error.message} return Response(content, status=status.HTTP_403_FORBIDDEN) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def delete(self, request, pk): """ Delete Blob Args: request: HTTP request pk: ObjectId Returns: - code: 204 content: Deletion succeed - code: 403 content: Authentication error - code: 404 content: Object was not found - code: 500 content: Internal server error """ try: # Get object blob_object = self.get_object(pk) # Check rights if request.user.is_superuser is False and str( request.user.id) != blob_object.user_id: return Response(status=status.HTTP_403_FORBIDDEN) # delete object blob_api.delete(blob_object) return Response(status=status.HTTP_204_NO_CONTENT) except Http404: content = {'message': 'Blob not found.'} return Response(content, status=status.HTTP_404_NOT_FOUND) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def delete(self, request, pk): """ Delete Blob Args: request: HTTP request pk: ObjectId Returns: - code: 204 content: Deletion succeed - code: 403 content: Authentication error - code: 404 content: Object was not found - code: 500 content: Internal server error """ try: # Get object blob_object = self.get_object(request, pk) # delete object blob_api.delete(blob_object, request.user) return Response(status=status.HTTP_204_NO_CONTENT) except AccessControlError as e: content = {'message': str(e)} return Response(content, status=status.HTTP_403_FORBIDDEN) except Http404: content = {'message': 'Blob not found.'} return Response(content, status=status.HTTP_404_NOT_FOUND) except Exception as api_exception: content = {'message': str(api_exception)} return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
request: blob_ids: Returns: """ try: list_blob = _get_blobs(blob_ids, request.user.is_superuser, request.user.id) except Exception, e: messages.add_message(request, messages.INFO, e.message) return HttpResponse(json.dumps({}), content_type='application/javascript') try: for blob in list_blob: blob_api.delete(blob) messages.add_message(request, messages.INFO, 'File deleted with success.') except: messages.add_message(request, messages.INFO, 'A problem occurred while deleting.') return HttpResponse(json.dumps({}), content_type='application/javascript') def _delete_form(request, form_ids): """ Delete forms. Args: request: form_ids: