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, {})
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, {})
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
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