Пример #1
0
    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)
Пример #2
0
 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)
Пример #3
0
    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)
Пример #4
0
 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)
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
    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)
Пример #9
0
            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: