Skip to content

Commit

Permalink
Add csv renderer to some API endpoints for csv exports
Browse files Browse the repository at this point in the history
References #121
  • Loading branch information
u8sand committed Jun 18, 2021
1 parent 146f7f3 commit 6434124
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
22 changes: 19 additions & 3 deletions FAIRshakeAPI/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from django.urls import reverse
from django.core.exceptions import MultipleObjectsReturned
from rest_framework import views, viewsets, schemas, response, mixins, decorators, renderers, permissions, status
from rest_framework_csv.renderers import CSVRenderer
from functools import reduce
from collections import defaultdict, OrderedDict

Expand Down Expand Up @@ -59,6 +60,7 @@ def get_template_context(self, data, renderer_context):
class CustomModelViewSet(viewsets.ModelViewSet):
renderer_classes = [
renderers.JSONRenderer,
CSVRenderer,
CustomTemplateHTMLRenderer,
CustomBrowsableAPIRenderer,
]
Expand Down Expand Up @@ -138,14 +140,27 @@ def get_or_create(self, request, **kwargs):
headers = self.get_success_headers(serialized_item.data)
return response.Response(serialized_item.data, status=status.HTTP_200_OK if found else status.HTTP_201_CREATED, headers=headers)

@swagger_auto_schema(methods=['get'], auto_schema=None)
@swagger_auto_schema(methods=['get'])
@decorators.action(
detail=True, methods=['get'], schema=None,
renderer_classes=[CustomTemplateHTMLRenderer],
renderer_classes=[
renderers.JSONRenderer,
CSVRenderer,
CustomTemplateHTMLRenderer
],
)
def assessments(self, request, pk=None, **kwargs):
self.check_permissions(request)
return response.Response()
if isinstance(request.accepted_renderer, CustomTemplateHTMLRenderer):
return response.Response()
# redirect /object/{pk}/assessments => assessments?object={pk}
GET = request.GET.copy()
GET[self.get_model_name()] = pk
return shortcuts.redirect(
reverse('assessment-list')
+ '?'
+ GET.urlencode()
)

@swagger_auto_schema(methods=['get', 'post'], auto_schema=None)
@decorators.action(
Expand Down Expand Up @@ -323,6 +338,7 @@ class DigitalObjectViewSet(IdentifiableModelViewSet):
detail=True, methods=['get'],
renderer_classes=[
renderers.JSONRenderer,
CSVRenderer,
CustomBrowsableAPIRenderer,
],
)
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ django-filter==2.3.0
django-livereload-server==0.3.2
django-rest-auth==0.9.5
Django==2.2.13
djangorestframework-csv==2.1.1
djangorestframework==3.11.0
drf-yasg==1.17.1
dynamic-rest==1.9.6
Expand Down

0 comments on commit 6434124

Please sign in to comment.