def export(self, request, queryset=None): self.init_response() self.init_writer() distinct_forms = queryset.aggregate( Count('form_definition', distinct=True))['form_definition__count'] include_created = settings.CSV_EXPORT_INCLUDE_CREATED include_pk = settings.CSV_EXPORT_INCLUDE_PK include_header = settings.CSV_EXPORT_INCLUDE_HEADER and distinct_forms == 1 include_form = settings.CSV_EXPORT_INCLUDE_FORM and distinct_forms > 1 if queryset.count(): fields = queryset[0].form_definition.get_field_dict() field_order = list(fields.keys()) if include_header: header = [] if include_form: header.append(_('Form')) if include_created: header.append(_('Created')) if include_pk: header.append(_('ID')) # Form fields might have been changed and not match # existing form logs anymore. # Hence, use current form definition for header. # for field in queryset[0].data: # header.append(field['label'] if field['label'] else field['key']) for field_name, field in fields.items(): header.append(field.label or field.name) self.writerow([ force_text(cell, encoding=settings.CSV_EXPORT_ENCODING) for cell in header ]) for entry in queryset: row = [] if include_form: row.append(entry.form_definition) if include_created: row.append(entry.created) if include_pk: row.append(entry.pk) name_to_value = {d['name']: d['value'] for d in entry.data} for field in field_order: value = friendly(name_to_value.get(field), null_value=settings.CSV_EXPORT_NULL_VALUE) value = force_text(value, encoding=settings.CSV_EXPORT_ENCODING) row.append(value) self.writerow(row) self.close() return self.response
def export_xls(self, request, queryset=None): import xlwt response = HttpResponse(mimetype='application/ms-excel') response[ 'Content-Disposition'] = 'attachment; filename=%s.xls' % unicode( self.model._meta.verbose_name_plural) wb = xlwt.Workbook() ws = wb.add_sheet(unicode(self.model._meta.verbose_name_plural)) if queryset is None: queryset = self.get_change_list_query_set(request) distinct_forms = queryset.aggregate( Count('form_definition', distinct=True))['form_definition__count'] include_created = settings.CSV_EXPORT_INCLUDE_CREATED include_pk = settings.CSV_EXPORT_INCLUDE_PK include_header = settings.CSV_EXPORT_INCLUDE_HEADER and distinct_forms == 1 include_form = settings.CSV_EXPORT_INCLUDE_FORM and distinct_forms > 1 if include_header: header = [] if include_form: header.append(_('Form')) if include_created: header.append(_('Created')) if include_pk: header.append(_('ID')) for field in queryset[0].data: header.append( field['label'] if field['label'] else field['key']) for i, f in enumerate(header): ws.write( 0, i, smart_unicode(f, encoding=settings.CSV_EXPORT_ENCODING)) for i, entry in enumerate(queryset): row = [] if include_form: row.append(entry.form_definition) if include_created: row.append(entry.created) if include_pk: row.append(entry.pk) for field in entry.data: value = friendly(field['value']) row.append( smart_unicode(value, encoding=settings.CSV_EXPORT_ENCODING)) for j, cell in enumerate(row): ws.write(i + 1, j, smart_unicode(cell)) wb.save(response) return response
def export(self, request, queryset=None): self.init_response() self.init_writer() distinct_forms = queryset.aggregate(Count('form_definition', distinct=True))['form_definition__count'] include_created = settings.CSV_EXPORT_INCLUDE_CREATED include_pk = settings.CSV_EXPORT_INCLUDE_PK include_header = settings.CSV_EXPORT_INCLUDE_HEADER and distinct_forms == 1 include_form = settings.CSV_EXPORT_INCLUDE_FORM and distinct_forms > 1 if queryset.count(): fields = queryset[0].form_definition.get_field_dict() if include_header: header = [] if include_form: header.append(_('Form')) if include_created: header.append(_('Created')) if include_pk: header.append(_('ID')) # Form fields might have been changed and not match # existing form logs anymore. # Hence, use current form definition for header. # for field in queryset[0].data: # header.append(field['label'] if field['label'] else field['key']) for field_name, field in fields.items(): header.append(field.label if field.label else field.key) self.writerow([smart_str(cell, encoding=settings.CSV_EXPORT_ENCODING) for cell in header]) for entry in queryset: row = [] if include_form: row.append(entry.form_definition) if include_created: row.append(entry.created) if include_pk: row.append(entry.pk) for item in entry.data: value = friendly(item['value'], null_value=settings.CSV_EXPORT_NULL_VALUE) value = smart_str( value, encoding=settings.CSV_EXPORT_ENCODING) row.append(value) self.writerow(row) self.close() return self.response
def export_csv(request): """ TODO: Re-code this. Executing this now will result in an error (No such class "FormLogAdmin"). """ response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = 'attachment; filename='+app_settings.get('FORM_DESIGNER_CSV_EXPORT_FILENAME') writer = csv.writer(response, delimiter=app_settings.get('FORM_DESIGNER_CSV_EXPORT_DELIMITER')) qs = get_change_list_query_set(FormLogAdmin, FormLog, request) from django.db.models import Count distinct_forms = qs.aggregate(Count('form_definition', distinct=True))['form_definition__count'] include_created = app_settings.get('FORM_DESIGNER_CSV_EXPORT_INCLUDE_CREATED') include_pk = app_settings.get('FORM_DESIGNER_CSV_EXPORT_INCLUDE_PK') include_header = app_settings.get('FORM_DESIGNER_CSV_EXPORT_INCLUDE_HEADER') and distinct_forms == 1 include_form = app_settings.get('FORM_DESIGNER_CSV_EXPORT_INCLUDE_FORM') and distinct_forms > 1 if include_header: header = [] if include_form: header.append(_('Form')) if include_created: header.append(_('Created')) if include_pk: header.append(_('ID')) for field in qs.all()[0].data: header.append(field['label'] if field['label'] else field['key']) writer.writerow(header) for entry in qs: row = [] if include_form: row.append(entry.form_definition) if include_created: row.append(entry.created) if include_pk: row.append(entry.pk) for field in entry.data: value = friendly(field['value']) if not isinstance(value, basestring): value = unicode(value) value = value.encode(settings.DEFAULT_CHARSET) row.append(value) writer.writerow(row) return response
def export_xls(self, request, queryset=None): import xlwt response = HttpResponse(mimetype='application/ms-excel') response['Content-Disposition'] = 'attachment; filename=%s.xls' % unicode(self.model._meta.verbose_name_plural) wb = xlwt.Workbook() ws = wb.add_sheet(unicode(self.model._meta.verbose_name_plural)) if queryset is None: queryset = self.get_change_list_query_set(request) distinct_forms = queryset.aggregate(Count('form_definition', distinct=True))['form_definition__count'] include_created = settings.CSV_EXPORT_INCLUDE_CREATED include_pk = settings.CSV_EXPORT_INCLUDE_PK include_header = settings.CSV_EXPORT_INCLUDE_HEADER and distinct_forms == 1 include_form = settings.CSV_EXPORT_INCLUDE_FORM and distinct_forms > 1 if include_header: header = [] if include_form: header.append(_('Form')) if include_created: header.append(_('Created')) if include_pk: header.append(_('ID')) for field in queryset[0].data: header.append(field['label'] if field['label'] else field['key']) for i, f in enumerate(header): ws.write(0, i, smart_unicode(f, encoding=settings.CSV_EXPORT_ENCODING)) for i, entry in enumerate(queryset): row = [] if include_form: row.append(entry.form_definition) if include_created: row.append(entry.created) if include_pk: row.append(entry.pk) for field in entry.data: value = friendly(field['value']) row.append(smart_unicode( value, encoding=settings.CSV_EXPORT_ENCODING)) for j, cell in enumerate(row): ws.write(i+1, j, smart_unicode(cell)) wb.save(response) return response
def export_csv(self, request, queryset=None): response = HttpResponse(mimetype='text/csv') response[ 'Content-Disposition'] = 'attachment; filename=' + settings.CSV_EXPORT_FILENAME writer = csv.writer(response, delimiter=settings.CSV_EXPORT_DELIMITER) if queryset is None: queryset = self.get_change_list_query_set(request) distinct_forms = queryset.aggregate( Count('form_definition', distinct=True))['form_definition__count'] include_created = settings.CSV_EXPORT_INCLUDE_CREATED include_pk = settings.CSV_EXPORT_INCLUDE_PK include_header = settings.CSV_EXPORT_INCLUDE_HEADER and distinct_forms == 1 include_form = settings.CSV_EXPORT_INCLUDE_FORM and distinct_forms > 1 if include_header: header = [] if include_form: header.append(_('Form')) if include_created: header.append(_('Created')) if include_pk: header.append(_('ID')) for field in queryset[0].data: header.append( field['label'] if field['label'] else field['key']) writer.writerow([ smart_str(cell, encoding=settings.CSV_EXPORT_ENCODING) for cell in header ]) for entry in queryset: row = [] if include_form: row.append(entry.form_definition) if include_created: row.append(entry.created) if include_pk: row.append(entry.pk) for field in entry.data: value = friendly(field['value']) row.append( smart_str(value, encoding=settings.CSV_EXPORT_ENCODING)) writer.writerow(row) return response
def export_csv(request): response = HttpResponse(mimetype="text/csv") response["Content-Disposition"] = "attachment; filename=" + app_settings.get("FORM_DESIGNER_CSV_EXPORT_FILENAME") writer = csv.writer(response, delimiter=app_settings.get("FORM_DESIGNER_CSV_EXPORT_DELIMITER")) qs = get_change_list_query_set(FormLogAdmin, FormLog, request) from django.db.models import Count distinct_forms = qs.aggregate(Count("form_definition", distinct=True))["form_definition__count"] include_created = app_settings.get("FORM_DESIGNER_CSV_EXPORT_INCLUDE_CREATED") include_pk = app_settings.get("FORM_DESIGNER_CSV_EXPORT_INCLUDE_PK") include_header = app_settings.get("FORM_DESIGNER_CSV_EXPORT_INCLUDE_HEADER") and distinct_forms == 1 include_form = app_settings.get("FORM_DESIGNER_CSV_EXPORT_INCLUDE_FORM") and distinct_forms > 1 if include_header: header = [] if include_form: header.append(_("Form")) if include_created: header.append(_("Created")) if include_pk: header.append(_("ID")) for field in qs.all()[0].data: header.append(field["label"] if field["label"] else field["key"]) writer.writerow(header) for entry in qs: row = [] if include_form: row.append(entry.form_definition) if include_created: row.append(entry.created) if include_pk: row.append(entry.pk) for field in entry.data: value = friendly(field["value"]) if not isinstance(value, basestring): value = unicode(value) value = value.encode(app_settings.get("FORM_DESIGNER_CSV_EXPORT_ENCODING")) row.append(value) writer.writerow(row) return response
def export_csv(request): response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = 'attachment; filename=' + settings.CSV_EXPORT_FILENAME writer = csv.writer(response, delimiter=settings.CSV_EXPORT_DELIMITER) qs = get_change_list_query_set(FormLogAdmin, FormLog, request) from django.db.models import Count distinct_forms = qs.aggregate(Count('form_definition', distinct=True))['form_definition__count'] include_created = settings.CSV_EXPORT_INCLUDE_CREATED include_pk = settings.CSV_EXPORT_INCLUDE_PK include_header = settings.CSV_EXPORT_INCLUDE_HEADER and distinct_forms == 1 include_form = settings.CSV_EXPORT_INCLUDE_FORM and distinct_forms > 1 if include_header: header = [] if include_form: header.append(_('Form')) if include_created: header.append(_('Created')) if include_pk: header.append(_('ID')) for field in qs.all()[0].data: header.append(field['label'] if field['label'] else field['key']) writer.writerow([smart_str(cell) for cell in header]) for entry in qs: row = [] if include_form: row.append(entry.form_definition) if include_created: row.append(entry.created) if include_pk: row.append(entry.pk) for field in entry.data: value = friendly(field['value']) if not isinstance(value, basestring): value = unicode(value) value = value.encode(settings.CSV_EXPORT_ENCODING) row.append(value) writer.writerow(row) return response
def export_csv(self, request, queryset=None): response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = 'attachment; filename=' + settings.CSV_EXPORT_FILENAME writer = csv.writer(response, delimiter=settings.CSV_EXPORT_DELIMITER) if queryset is None: queryset = self.get_change_list_query_set(request) distinct_forms = queryset.aggregate(Count('form_definition', distinct=True))['form_definition__count'] include_created = settings.CSV_EXPORT_INCLUDE_CREATED include_pk = settings.CSV_EXPORT_INCLUDE_PK include_header = settings.CSV_EXPORT_INCLUDE_HEADER and distinct_forms == 1 include_form = settings.CSV_EXPORT_INCLUDE_FORM and distinct_forms > 1 if include_header: header = [] if include_form: header.append(_('Form')) if include_created: header.append(_('Created')) if include_pk: header.append(_('ID')) for field in queryset[0].data: header.append(field['label'] if field['label'] else field['key']) writer.writerow([smart_str(cell, encoding=settings.CSV_EXPORT_ENCODING) for cell in header]) for entry in queryset: row = [] if include_form: row.append(entry.form_definition) if include_created: row.append(entry.created) if include_pk: row.append(entry.pk) for field in entry.data: value = friendly(field['value']) row.append(smart_str( value, encoding=settings.CSV_EXPORT_ENCODING)) writer.writerow(row) return response
def export(self, request, queryset=None): self.init_response() self.init_writer() distinct_forms = queryset.aggregate(Count('form_definition', distinct=True))['form_definition__count'] include_created = settings.CSV_EXPORT_INCLUDE_CREATED include_pk = settings.CSV_EXPORT_INCLUDE_PK include_header = settings.CSV_EXPORT_INCLUDE_HEADER include_form = settings.CSV_EXPORT_INCLUDE_FORM and distinct_forms > 1 if queryset.count(): if include_header: header = [] if include_form: header.append(_('Form')) if include_created: header.append(_('Created')) if include_pk: header.append(_('ID')) # Form fields might have been changed and not match # existing form logs anymore. # Hence, use current form definition for header. # for field in queryset[0].data: # header.append(field['label'] if field['label'] else field['key']) if distinct_forms == 1: # Each field label is a header column fields = queryset[0].form_definition.get_field_dict() for field_name, field in fields.items(): header.append(field.label if field.label else field.key) else: # Since multiple form types will most likely have different field labels, # just have one 'Data' header column to display all the field labels and values header.append(_('Data')) self.writerow([smart_str(cell, encoding=settings.CSV_EXPORT_ENCODING) for cell in header]) for entry in queryset: row = [] if include_form: row.append(entry.form_definition) if include_created: row.append(entry.created) if include_pk: row.append(entry.pk) if distinct_forms == 1: # Pretty print all values into their own corresponding columns for item in entry.data: value = friendly(item['value'], null_value=settings.CSV_EXPORT_NULL_VALUE, return_markup=False) value = smart_str(value, encoding=settings.CSV_EXPORT_ENCODING) row.append(value) else: # Pretty print all values into the 'Data' column value = u'' for item in entry.data: value += item['label'] if item['label'] else item['name'] value += u': ' + friendly(item['value'], null_value=settings.CSV_EXPORT_NULL_VALUE, return_markup=False) value += u'\n' value = smart_str(value[:len(value)-1], encoding=settings.CSV_EXPORT_ENCODING) row.append(value) self.writerow(row) self.close() return self.response