Example #1
0
    def process(self, request, result_data):
        objects = []

        # Split the primary key from the requested values in the row.
        for row in result_data['rows']:
            objects.append({
                'pk': row[0],
                'values': row[1:],
            })

        header = []
        exporter = result_data['processor'].get_exporter(
            get_exporter_class(result_data['export_type']))
        view_node = result_data['view'].parse()
        concepts = view_node.get_concepts_for_select()
        ordering = OrderedDict(view_node.ordering)

        # Skip the primary key field in the header since it is not exposed
        # in the row output below.
        for i, f in enumerate(exporter.header[1:]):
            concept = concepts[i]

            obj = {
                'id': concept.id,
                'name': f['label'],
            }

            if concept.id in ordering:
                obj['direction'] = ordering[concept.id]

            header.append(obj)

        # Various model options
        opts = result_data['queryset'].model._meta

        model_name = opts.verbose_name.format()
        model_name_plural = opts.verbose_name_plural.format()

        data = {
            'keys': header,
            'items': objects,
            'item_name': model_name,
            'item_name_plural': model_name_plural,
            'limit': result_data['limit'],
            'page': result_data['page'],
        }

        response = HttpResponse(
            content=serializers.encode('application/json', data),
            content_type='application/json')

        path = reverse(self.reverse_name)
        links = self.get_page_links(
            request, path, result_data['page'], result_data['limit'])

        return patch_response(request, response, links, {})
Example #2
0
    def process(self, request, result_data):
        objects = []

        # Split the primary key from the requested values in the row.
        for row in result_data['rows']:
            objects.append({
                'pk': row[0],
                'values': row[1:],
            })

        header = []
        exporter = result_data['processor'].get_exporter(
            get_exporter_class(result_data['export_type']))
        view_node = result_data['view'].parse()
        concepts = view_node.get_concepts_for_select()
        ordering = OrderedDict(view_node.ordering)

        # Skip the primary key field in the header since it is not exposed
        # in the row output below.
        for i, f in enumerate(exporter.header[1:]):
            concept = concepts[i]

            obj = {
                'id': concept.id,
                'name': f['label'],
            }

            if concept.id in ordering:
                obj['direction'] = ordering[concept.id]

            header.append(obj)

        # Various model options
        opts = result_data['queryset'].model._meta

        model_name = opts.verbose_name.format()
        model_name_plural = opts.verbose_name_plural.format()

        data = {
            'keys': header,
            'items': objects,
            'item_name': model_name,
            'item_name_plural': model_name_plural,
            'limit': result_data['limit'],
            'page': result_data['page'],
        }

        response = HttpResponse(content=serializers.encode(
            'application/json', data),
                                content_type='application/json')

        path = reverse(self.reverse_name)
        links = self.get_page_links(request, path, result_data['page'],
                                    result_data['limit'])

        return patch_response(request, response, links, {})
Example #3
0
    def process(self, request, result_data):
        export_type = result_data['export_type']
        exporter = result_data['processor'].get_exporter(
            get_exporter_class(export_type))
        page = result_data['page']
        stop_page = result_data['stop_page']

        # Build a file name for the export file based on the page range.
        if page:
            file_tag = 'p{0}'.format(page)

            if stop_page and stop_page > page:
                file_tag = 'p{0}-{1}'.format(page, stop_page)
        else:
            file_tag = 'all'

        resp = HttpResponse()
        exporter.write(result_data['rows'], buff=resp, request=request)

        filename = '{0}-{1}-data.{2}'.format(file_tag, datetime.now(),
                                             exporter.file_extension)

        cookie_name = settings.EXPORT_COOKIE_NAME_TEMPLATE.format(export_type)
        resp.set_cookie(cookie_name, settings.EXPORT_COOKIE_DATA)

        resp['Content-Disposition'] = 'attachment; filename="{0}"'\
                                      .format(filename)
        resp['Content-Type'] = exporter.content_type

        usage.log('export',
                  request=request,
                  data={
                      'type': export_type,
                      'partial': page is not None,
                  })

        return resp
Example #4
0
    def process(self, request, result_data):
        export_type = result_data['export_type']
        exporter = result_data['processor'].get_exporter(
            get_exporter_class(export_type))
        page = result_data['page']
        stop_page = result_data['stop_page']

        # Build a file name for the export file based on the page range.
        if page:
            file_tag = 'p{0}'.format(page)

            if stop_page and stop_page > page:
                file_tag = 'p{0}-{1}'.format(page, stop_page)
        else:
            file_tag = 'all'

        resp = HttpResponse()
        exporter.write(result_data['rows'], buff=resp, request=request)

        filename = '{0}-{1}-data.{2}'.format(file_tag,
                                             datetime.now(),
                                             exporter.file_extension)

        cookie_name = settings.EXPORT_COOKIE_NAME_TEMPLATE.format(export_type)
        resp.set_cookie(cookie_name, settings.EXPORT_COOKIE_DATA)

        resp['Content-Disposition'] = 'attachment; filename="{0}"'\
                                      .format(filename)
        resp['Content-Type'] = exporter.content_type

        usage.log('export', request=request, data={
            'type': export_type,
            'partial': page is not None,
        })

        return resp
Example #5
0
 def process(self, request, result_data):
     exporter = result_data['processor'].get_exporter(
         get_exporter_class(result_data['export_type']))
     resp = HttpResponse(content_type=exporter.content_type)
     exporter.write(result_data['rows'], buff=resp, request=request)
     return resp
Example #6
0
 def process(self, request, result_data):
     exporter = result_data['processor'].get_exporter(
         get_exporter_class(result_data['export_type']))
     resp = HttpResponse(content_type=exporter.content_type)
     exporter.write(result_data['rows'], buff=resp, request=request)
     return resp