From d3980303963f643774658ec6798621cd212d9518 Mon Sep 17 00:00:00 2001 From: Jonas Winkler Date: Fri, 13 Nov 2020 22:31:39 +0100 Subject: [PATCH] fixes the docker build. also: proper 404 for missing documents/thumbnails --- Dockerfile | 2 +- src/documents/views.py | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1253e3194..82b552b95 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,7 @@ COPY src-ui/package* ./ RUN npm install COPY src-ui . -RUN node_modules/.bin/ng build --prod --output-hashing none --sourceMap=false +RUN node_modules/.bin/ng build --prod --output-hashing none --sourceMap=false --output-path dist/paperless-ui ############################################################################### ### Back end ### diff --git a/src/documents/views.py b/src/documents/views.py index 166806d8e..997d03213 100755 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -1,5 +1,5 @@ from django.db.models import Count, Max -from django.http import HttpResponse, HttpResponseBadRequest +from django.http import HttpResponse, HttpResponseBadRequest, Http404 from django.views.decorators.cache import cache_control from django.views.generic import TemplateView from django_filters.rest_framework import DjangoFilterBackend @@ -140,17 +140,27 @@ class DocumentViewSet(RetrieveModelMixin, @action(methods=['get'], detail=True) def preview(self, request, pk=None): - response = self.file_response(pk, "inline") - return response + try: + response = self.file_response(pk, "inline") + return response + except FileNotFoundError: + raise Http404("Document source file does not exist") @action(methods=['get'], detail=True) @cache_control(public=False, max_age=315360000) def thumb(self, request, pk=None): - return HttpResponse(Document.objects.get(id=pk).thumbnail_file, content_type='image/png') + try: + return HttpResponse(Document.objects.get(id=pk).thumbnail_file, content_type='image/png') + except FileNotFoundError: + raise Http404("Document thumbnail does not exist") @action(methods=['get'], detail=True) def download(self, request, pk=None): - return self.file_response(pk, "attachment") + try: + return self.file_response(pk, "attachment") + except FileNotFoundError: + raise Http404("Document source file does not exist") + class LogViewSet(ReadOnlyModelViewSet):