Beispiel #1
0
    def _get_streaming_response(self):
        """
        Get a StreamingHttpResponse response object
        """
        def get_json_string(item):
            return json.dumps(
                item.json if isinstance(item, Instance) else item)

        if self.kwargs.get('format') == 'xml':
            response = StreamingHttpResponse(
                renderers.InstanceXMLRenderer().stream_data(
                    self.object_list, self.get_serializer),
                content_type="application/xml")
        else:
            response = StreamingHttpResponse(json_stream(
                self.object_list, get_json_string),
                                             content_type="application/json")

        # calculate etag value and add it to response headers
        if hasattr(self, 'etag_hash'):
            self.set_etag_header(None, self.etag_hash)

        # set headers on streaming response
        for k, v in self.headers.items():
            response[k] = v

        return response
Beispiel #2
0
    def _get_streaming_response(self):
        """
        Get a StreamingHttpResponse response object
        """
        # use queryset_iterator.  Will need to change this to the Django
        # native .iterator() method when we upgrade to django version 2
        # because in Django 2 .iterator() has support for chunk size
        queryset = queryset_iterator(self.object_list, chunksize=2000)

        def get_json_string(item):
            return json.dumps(
                XFormBaseSerializer(instance=item,
                                    context={
                                        'request': self.request
                                    }).data)

        response = StreamingHttpResponse(json_stream(queryset,
                                                     get_json_string),
                                         content_type="application/json")

        # calculate etag value and add it to response headers
        if hasattr(self, 'etag_data'):
            self.set_etag_header(None, self.etag_data)

        self.set_cache_control(response)

        # set headers on streaming response
        for k, v in self.headers.items():
            response[k] = v

        return response
Beispiel #3
0
    def _get_streaming_response(self):
        """
        Get a StreamingHttpResponse response object
        """
        # use queryset_iterator.  Will need to change this to the Django
        # native .iterator() method when we upgrade to django version 2
        # because in Django 2 .iterator() has support for chunk size
        queryset = queryset_iterator(self.object_list, chunksize=2000)

        def get_json_string(item):
            return json.dumps(XFormBaseSerializer(
                instance=item,
                context={'request': self.request}
                ).data)

        response = StreamingHttpResponse(
            json_stream(queryset, get_json_string),
            content_type="application/json"
        )

        # calculate etag value and add it to response headers
        if hasattr(self, 'etag_data'):
            self.set_etag_header(None, self.etag_data)

        self.set_cache_control(response)

        # set headers on streaming response
        for k, v in self.headers.items():
            response[k] = v

        return response
Beispiel #4
0
    def get_streaming_response(self, data):
        """Get a StreamingHttpResponse response object"""
        def get_json_string(item):
            return json.dumps(
                {re.sub(r"\W", r"_", a): b
                 for a, b in item.items()})

        response = StreamingHttpResponse(json_stream(data, get_json_string),
                                         content_type="application/json")

        # set headers on streaming response
        for k, v in self.headers.items():
            response[k] = v

        return response
Beispiel #5
0
    def _get_streaming_response(self, data):
        """Get a StreamingHttpResponse response object"""

        def get_json_string(item):
            return json.dumps({
                re.sub(r"\W", r"_", a): b for a, b in item.items()})

        response = StreamingHttpResponse(
            json_stream(data, get_json_string),
            content_type="application/json"
        )

        # set headers on streaming response
        for k, v in self.headers.items():
            response[k] = v

        return response
Beispiel #6
0
    def _get_streaming_response(self):
        """
        Get a StreamingHttpResponse response object
        """
        def get_json_string(item):
            return json.dumps(
                item.json if isinstance(item, Instance) else item)

        response = StreamingHttpResponse(json_stream(self.object_list,
                                                     get_json_string),
                                         content_type="application/json")

        # calculate etag value and add it to response headers
        if hasattr(self, 'etag_hash'):
            self.set_etag_header(None, self.etag_hash)

        # set headers on streaming response
        for k, v in self.headers.items():
            response[k] = v

        return response
Beispiel #7
0
    def _get_streaming_response(self):
        """
        Get a StreamingHttpResponse response object
        """
        def get_json_string(item):
            return json.dumps(
                item.json if isinstance(item, Instance) else item)

        response = StreamingHttpResponse(
            json_stream(self.object_list, get_json_string),
            content_type="application/json"
        )

        # calculate etag value and add it to response headers
        if hasattr(self, 'etag_hash'):
            self.set_etag_header(None, self.etag_hash)

        # set headers on streaming response
        for k, v in self.headers.items():
            response[k] = v

        return response