From cec7096ff995c5519acb732fda404a98b4f2cce8 Mon Sep 17 00:00:00 2001 From: Maciej Tronowski Date: Wed, 22 Apr 2015 11:36:05 +0200 Subject: [PATCH] gridftp: handle errors during fileupload --- filex/templates/filex/upload.js.html | 2 +- plgng/settings_common.py | 1 + qcg/middleware.py | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 qcg/middleware.py diff --git a/filex/templates/filex/upload.js.html b/filex/templates/filex/upload.js.html index e399717..7b64658 100644 --- a/filex/templates/filex/upload.js.html +++ b/filex/templates/filex/upload.js.html @@ -152,7 +152,7 @@ data.context.find('.progress-info').text('Zakończono'); }, fail: function (e, data) { - data.context.find('.progress-info').text('Błąd'); + data.context.find('.progress-info').text((data.jqXHR.responseJSON || {}).error || 'Błąd'); console.error(data); } }); diff --git a/plgng/settings_common.py b/plgng/settings_common.py index a6c93aa..4d47584 100644 --- a/plgng/settings_common.py +++ b/plgng/settings_common.py @@ -45,6 +45,7 @@ MIDDLEWARE_CLASSES = ( 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'qcg.middleware.FTPMiddleware', ) TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + ( diff --git a/qcg/middleware.py b/qcg/middleware.py new file mode 100644 index 0000000..d10b927 --- /dev/null +++ b/qcg/middleware.py @@ -0,0 +1,17 @@ +from django.http import JsonResponse + +from filex.ftp import FTPException + + +class FTPMiddleware(object): + def process_exception(self, request, exception): + if isinstance(exception, FTPException): + message = exception.message + status = 400 + + if 'No such file or directory' in message: + status = 404 + elif 'Permission denied' in message: + status = 403 + + return JsonResponse({'error': message}, status=status) -- 1.7.9.5