示例#1
0
    def build_response(self, data_list):
        """ Build the response.

        Args:

            data_list: List of data

        Returns:

            The response paginated
        """
        if 'all' in self.request.data and to_bool(self.request.data['all']):
            # Serialize data list
            data_serializer = DataSerializer(data_list, many=True)
            # Return response
            return Response(data_serializer.data)
        else:
            # Get paginator
            paginator = StandardResultsSetPagination()

            # Get requested page from list of results
            page = paginator.paginate_queryset(data_list, self.request)

            # Serialize page
            data_serializer = DataSerializer(page, many=True)

            # Return paginated response
            return paginator.get_paginated_response(data_serializer.data)
示例#2
0
    def get(self, request):
        """ Get template version managers.

        Query Params:
            title: title
            is_disabled: [True|False]

        Args:
            request:

        Returns:

        """
        try:
            # Get objects
            object_list = self.get_template_version_managers()

            # Apply filters
            title = self.request.query_params.get('title', None)
            if title is not None:
                object_list = object_list.filter(title=title)

            is_disabled = self.request.query_params.get('is_disabled', None)
            if is_disabled is not None:
                object_list = object_list.filter(is_disabled=to_bool(is_disabled))

            # Serialize object
            serializer = TemplateVersionManagerSerializer(object_list, many=True)
            return Response(serializer.data, status=status.HTTP_200_OK)
        except Exception as api_exception:
            content = {'message': api_exception.message}
            return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
示例#3
0
    def get(self, request, pk):
        """Download the XSD file from a Template

        Args:

            request: HTTP request
            pk: ObjectId

        Examples:

            ../template/[template_id]/download
            ../template/[template_id]/download?pretty_print=false

        Returns:

            - code: 200
              content: XSD file
            - code: 404
              content: Object was not found
            - code: 500
              content: Internal server error
        """
        try:
            # Get object
            template_object = self.get_object(pk, request=request)

            # get xml content
            content = template_object.content

            # get format bool
            format = request.query_params.get("pretty_print", False)

            # format content
            if to_bool(format):
                content = format_content_xml(content)

            return get_file_http_response(content, template_object.filename,
                                          "text/xsd", "xsd")
        except Http404:
            content = {"message": "Template not found."}
            return Response(content, status=status.HTTP_404_NOT_FOUND)
        except XMLError:
            content = {"message": "Content is not well formatted XML."}
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
        except AccessControlError:
            content = {"message": "Access Forbidden."}
            return Response(content, status=status.HTTP_403_FORBIDDEN)
        except Exception as api_exception:
            content = {"message": str(api_exception)}
            return Response(content,
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
示例#4
0
    def get(self, request, pk):
        """Download the XML file from a data

        Args:

            request: HTTP request
            pk: ObjectId

        Examples:

            ../data/download/[data_id]
            ../data/download/[data_id]?pretty_print=true

        Returns:

            - code: 200
              content: XML file
            - code: 404
              content: Object was not found
            - code: 500
              content: Internal server error
        """
        try:
            # Get object
            data_object = self.get_object(request, pk)

            # get xml content
            xml_content = data_object.xml_content

            # get format bool
            format = request.query_params.get("pretty_print", False)

            # format content
            if to_bool(format):
                xml_content = format_content_xml(xml_content)

            return get_file_http_response(xml_content, data_object.title,
                                          "text/xml", "xml")
        except Http404:
            content = {"message": "Data not found."}
            return Response(content, status=status.HTTP_404_NOT_FOUND)
        except XMLError:
            content = {"message": "Content is not well formatted XML."}
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
        except Exception as api_exception:
            content = {"message": str(api_exception)}
            return Response(content,
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
示例#5
0
    def get(self, request):
        """Get template version managers

        Url Parameters:

            template: template_id
            title: document_title

        Args:

            request: HTTP request

        Returns:

            - code: 200
              content: List of template version manager
            - code: 500
              content: Internal server error
        """
        try:
            # Get objects
            object_list = self.get_template_version_managers()

            # Apply filters
            title = self.request.query_params.get("title", None)
            if title is not None:
                object_list = object_list.filter(title=title)

            is_disabled = self.request.query_params.get("is_disabled", None)
            if is_disabled is not None:
                object_list = object_list.filter(
                    is_disabled=to_bool(is_disabled))

            # Serialize object
            serializer = self.serializer(object_list, many=True)
            return Response(serializer.data, status=status.HTTP_200_OK)
        except AccessControlError:
            content = {"message": "Access Forbidden"}
            return Response(content, status=status.HTTP_403_FORBIDDEN)
        except Exception as api_exception:
            content = {"message": str(api_exception)}
            return Response(content,
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
示例#6
0
    def build_response(self, data_list):
        """Build the response.

        Args:

            data_list: List of data

        Returns:

            The response paginated
        """
        xpath = self.request.data.get("xpath", None)
        namespaces = self.request.data.get("namespaces", None)
        if "all" in self.request.data and to_bool(self.request.data["all"]):
            # Select values at xpath if provided
            if xpath:
                for data_object in data_list:
                    data_object.xml_content = get_content_by_xpath(
                        data_object.xml_content, xpath, namespaces=namespaces)
            # Serialize data list
            data_serializer = self.serializer(data_list, many=True)
            # Return response
            return Response(data_serializer.data)
        else:
            # Get paginator
            paginator = StandardResultsSetPagination()

            # Get requested page from list of results
            page = paginator.paginate_queryset(data_list, self.request)

            # Select values at xpath if provided
            if xpath:
                for data_object in page:
                    data_object.xml_content = get_content_by_xpath(
                        data_object.xml_content, xpath, namespaces=namespaces)

            # Serialize page
            data_serializer = self.serializer(page, many=True)

            # Return paginated response
            return paginator.get_paginated_response(data_serializer.data)
示例#7
0
    def get(self, request):
        """ Get template version managers

        Url Parameters:

            template: template_id
            title: document_title

        Args:

            request: HTTP request

        Returns:

            - code: 200
              content: List of template version manager
            - code: 500
              content: Internal server error
        """
        try:
            # Get objects
            object_list = self.get_template_version_managers()

            # Apply filters
            title = self.request.query_params.get('title', None)
            if title is not None:
                object_list = object_list.filter(title=title)

            is_disabled = self.request.query_params.get('is_disabled', None)
            if is_disabled is not None:
                object_list = object_list.filter(is_disabled=to_bool(is_disabled))

            # Serialize object
            serializer = TemplateVersionManagerSerializer(object_list, many=True)
            return Response(serializer.data, status=status.HTTP_200_OK)
        except Exception as api_exception:
            content = {'message': api_exception.message}
            return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
 def test_boolean_false_expected_case_returns_false(self):
     self.assertEqual(to_bool("False"), False)
 def test_unexpected_type_raises_value_error(self):
     with self.assertRaises(ValueError):
         to_bool(1)
 def test_unexpected_string_raises_value_error(self):
     with self.assertRaises(ValueError):
         to_bool("bool")
 def test_boolean_true_returns_true(self):
     self.assertEqual(to_bool(True), True)
 def test_boolean_false_returns_false(self):
     self.assertEqual(to_bool(False), False)
 def test_boolean_true_unexpected_case_returns_true(self):
     self.assertEqual(to_bool("true"), True)
 def test_boolean_false_unexpected_case_returns_false(self):
     self.assertEqual(to_bool('false'), False)
 def test_boolean_true_expected_case_returns_true(self):
     self.assertEqual(to_bool('True'), True)