X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/3204e4303148302d278036eebcfc8cb105cc97d7..f067862049a3be1faa5ff1a2535ea6362cea23de:/src/fileupload/views.py diff --git a/src/fileupload/views.py b/src/fileupload/views.py index 9993ddb3..ddae62b1 100644 --- a/src/fileupload/views.py +++ b/src/fileupload/views.py @@ -1,10 +1,12 @@ +# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# import json import os from urllib.parse import quote from django.conf import settings from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden, Http404 from django.utils.decorators import method_decorator -from django.utils.encoding import smart_bytes from django.views.decorators.vary import vary_on_headers from django.views.generic import FormView, View from .forms import UploadForm @@ -75,10 +77,9 @@ class UploadView(FormView): Makes sure it's inside MEDIA_ROOT. """ - filename = smart_bytes(filename) path = os.path.abspath(os.path.join( settings.MEDIA_ROOT, - smart_bytes(self.get_directory()), + self.get_directory(), filename)) if not path.startswith(settings.MEDIA_ROOT): raise Http404 @@ -97,7 +98,7 @@ class UploadView(FormView): return super(UploadView, self).dispatch(request, *args, **kwargs) def get(self, request, *args, **kwargs): - if request.is_ajax(): + if request.headers.get('x-requested-with') == 'XMLHttpRequest': files = [] path = self.get_safe_path() if os.path.isdir(path): @@ -118,9 +119,8 @@ class UploadView(FormView): quote(f.encode('utf-8'))), 'delete_type': "DELETE" }) - thumbnail_url = thumbnail(self.get_directory() + f), files.append(file_info) - return JSONResponse(files) + return JSONResponse({"files": files}) else: return super(UploadView, self).get(request, *args, **kwargs) @@ -131,7 +131,7 @@ class UploadView(FormView): os.makedirs(path) data = [] for f in flist: - with open(self.get_safe_path(f.name), 'w') as destination: + with open(self.get_safe_path(f.name), 'wb') as destination: for chunk in f.chunks(): destination.write(chunk) data.append({ @@ -143,7 +143,7 @@ class UploadView(FormView): quote(f.name.encode('utf-8'))), 'delete_type': "DELETE" }) - response = JSONResponse(data) + response = JSONResponse({"files": data}) response['Content-Disposition'] = 'inline; filename=files.json' return response