From 8720ee7dac391f34c2b5b11ee9a9f019859b0648 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bodor=20M=C3=A1t=C3=A9?= <bmate711@gmail.com>
Date: Tue, 4 Feb 2020 23:02:48 +0100
Subject: [PATCH] Create api endpoint for download document

---
 src/document/views.py | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/document/views.py b/src/document/views.py
index 1adb118..3744e3b 100644
--- a/src/document/views.py
+++ b/src/document/views.py
@@ -3,7 +3,9 @@ from common import permissions
 from . import models
 from . import serializers
 from rest_framework.parsers import JSONParser, MultiPartParser
-
+from django.http import HttpResponse, Http404
+from rest_framework.decorators import action
+import os
 
 class DocumentViewSet(viewsets.ModelViewSet):
     serializer_class = serializers.DocumentSerializer
@@ -43,3 +45,12 @@ class DocumentViewSet(viewsets.ModelViewSet):
         }
  
         serializer.save(**kwargs)
+
+    @action(detail=True, methods=["get"])
+    def download(self, request, pk):
+        document = self.get_object()
+        with document.file.open() as fh:
+            response = HttpResponse(fh.read(), content_type="application/media")
+            response['Content-Disposition'] = 'inline; filename=' + os.path.basename(document.file.name)
+            return response
+        raise Http404
-- 
GitLab