diff --git a/edivorce/apps/core/urls.py b/edivorce/apps/core/urls.py index bc77a4b9..53e613f2 100644 --- a/edivorce/apps/core/urls.py +++ b/edivorce/apps/core/urls.py @@ -8,7 +8,7 @@ urlpatterns = [ url(r'^api/response$', api.UserResponseHandler.as_view()), url(r'^api/documents/$', api.DocumentCreateView.as_view(), name='documents'), path('api/documents///', api.DocumentMetaDataView.as_view(), name='documents-meta'), - path('api/documents/////', api.DocumentView.as_view(), name='document'), + path('api/documents////', api.DocumentView.as_view(), name='document'), # url(r'^login/headers$', system.headers), diff --git a/edivorce/apps/core/views/api.py b/edivorce/apps/core/views/api.py index 5ee8e326..fcf371b9 100644 --- a/edivorce/apps/core/views/api.py +++ b/edivorce/apps/core/views/api.py @@ -6,6 +6,7 @@ from rest_framework import permissions, status from rest_framework.generics import CreateAPIView, ListAPIView, RetrieveUpdateDestroyAPIView from rest_framework.views import APIView from rest_framework.response import Response +from os.path import splitext from ..models import Document, Question from ..serializer import CreateDocumentSerializer, DocumentMetadataSerializer, UserResponseSerializer @@ -80,7 +81,18 @@ class DocumentView(RetrieveUpdateDestroyAPIView): def retrieve(self, request, *args, **kwargs): """ Return the file instead of meta data """ doc = self.get_object() - content_type = 'application/pdf' if 'pdf' in doc.filename else 'image/jpeg' + + # Get the content-type based on the file extension + content_types = { + ".pdf": "application/pdf", + ".gif": "image/gif", + ".png": "image/png", + ".jpe": "image/jpeg", + ".jpg": "image/jpeg", + ".jpeg": "image/jpeg" + } + _, extension = splitext(doc.filename.lower()) + content_type = content_types[extension] # If file doesn't exist anymore, delete it try: diff --git a/edivorce/apps/poc/models.py b/edivorce/apps/poc/models.py deleted file mode 100644 index e69de29b..00000000 diff --git a/edivorce/urls.py b/edivorce/urls.py index 6b75974c..c98ef132 100644 --- a/edivorce/urls.py +++ b/edivorce/urls.py @@ -2,6 +2,7 @@ from django.conf import settings from django.conf.urls import include, url from django.contrib import admin from django.urls import path +from django.views.decorators.csrf import csrf_exempt from graphene_django.views import GraphQLView from .apps.core.views import main @@ -12,9 +13,9 @@ if settings.ENVIRONMENT in ['localdev', 'dev', 'test', 'minishift']: import debug_toolbar urlpatterns.append(url(r'^__debug__/', include(debug_toolbar.urls)),) urlpatterns.append(url(r'^poc/', include('edivorce.apps.poc.urls'))) - urlpatterns.append(path('api/graphql/', GraphQLView.as_view(graphiql=True))), + urlpatterns.append(path('api/graphql/', csrf_exempt(GraphQLView.as_view(graphiql=True)))) else: - urlpatterns.append(path('api/graphql/', GraphQLView.as_view(graphiql=False))), + urlpatterns.append(path('api/graphql/', csrf_exempt(GraphQLView.as_view(graphiql=False)))) if settings.ENVIRONMENT in ['localdev', 'minishift']: urlpatterns.append(url(r'^admin/', admin.site.urls)) diff --git a/vue/package-lock.json b/vue/package-lock.json index 08eb4cd2..76f0fd7a 100644 --- a/vue/package-lock.json +++ b/vue/package-lock.json @@ -5376,6 +5376,11 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", @@ -6319,6 +6324,11 @@ "has-symbols": "^1.0.1" } }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, "is-resolvable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", @@ -10150,6 +10160,23 @@ "safe-buffer": "~5.1.0" } }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + } + } + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", diff --git a/vue/package.json b/vue/package.json index 13d0eb25..1b68ae75 100644 --- a/vue/package.json +++ b/vue/package.json @@ -9,6 +9,7 @@ "dependencies": { "axios": "^0.20.0", "core-js": "^3.6.5", + "stringify-object": "^3.3.0", "uiv": "^0.36.1", "vue": "^2.6.11", "vue-upload-component": "^2.8.20" diff --git a/vue/src/components/Uploader/Uploader.vue b/vue/src/components/Uploader/Uploader.vue index d6f8b88c..6215f07e 100644 --- a/vue/src/components/Uploader/Uploader.vue +++ b/vue/src/components/Uploader/Uploader.vue @@ -90,6 +90,7 @@ import ItemTile from './ItemTile' import FormDefinitions from "../../utils/forms"; import rotateFix from '../../utils/rotation'; import axios from 'axios'; +import graphQLStringify from 'stringify-object'; export default { props: { @@ -310,7 +311,24 @@ export default { partyCode: this.party, files: allFiles }; - console.log('Call API', data); + const graphQLData = graphQLStringify(data,{singleQuotes: false, inlineCharacterLimit: 99999}); + console.log('Call API', graphQLData); + const url = `${this.$parent.proxyRootPath}api/graphql/`; + axios.post(url, { + query: ` + mutation updateMetadata { + updateMetadata(input:${graphQLData}){ + documents{filename size rotation} + } + } + `}) + .then(response => { + console.log('response', response); + }) + .catch((error) => { + this.showError('Error saving metadata'); + console.log('error', error); + }); } }, created() {