Source code for intranet.utils.admin_helpers
import csv
from django.http import HttpResponse
[docs]def export_csv_action(description="Export selected objects as CSV file", fields=None, exclude=None, header=True):
"""This function returns an export csv action.
'fields' and 'exclude' work like in django
ModelForm 'header' is whether or not to output the column names as the first row.
https://djangosnippets.org/snippets/2369/
"""
def export_as_csv(modeladmin, request, queryset):
"""Generic csv export admin action.
based on http://djangosnippets.org/snippets/1697/
"""
opts = modeladmin.model._meta
field_names = {field.name for field in opts.fields}
if fields:
fieldset = set(fields)
field_names = field_names & fieldset
elif exclude:
excludeset = set(exclude)
field_names = field_names - excludeset
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = "attachment; filename=%s.csv" % str(opts).replace(".", "_")
writer = csv.writer(response)
if header:
writer.writerow(list(field_names))
for obj in queryset:
writer.writerow([str(getattr(obj, field)) for field in field_names])
return response
export_as_csv.short_description = description
return export_as_csv