refactor: Use custom CSV export view

Remove dependency on djangorestframework-csv
This commit is contained in:
James Graham
2020-03-27 17:00:37 +00:00
parent 2cdc7675c7
commit da57108e3e
8 changed files with 50 additions and 53 deletions

33
people/views/export.py Normal file
View File

@@ -0,0 +1,33 @@
import csv
import typing
from django.http import HttpResponse
from django.views.generic.list import BaseListView
from .. import models, serializers
class CsvExportView(BaseListView):
model = None
serializer_class = None
def render_to_response(self, context: typing.Dict) -> HttpResponse:
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = f'attachment; filename="{self.get_context_object_name(self.object_list)}.csv"'
serializer = self.serializer_class(self.get_queryset(), many=True)
writer = csv.DictWriter(response, fieldnames=self.serializer_class.Meta.fields)
writer.writeheader()
writer.writerows(serializer.data)
return response
class PersonExportView(CsvExportView):
model = models.Person
serializer_class = serializers.PersonExportSerializer
class RelationshipExportView(CsvExportView):
model = models.Relationship
serializer_class = serializers.RelationshipSerializer