gridftp: handle errors during fileupload
authorMaciej Tronowski <mtro@man.poznan.pl>
Wed, 22 Apr 2015 09:36:05 +0000 (11:36 +0200)
committerMaciej Tronowski <mtro@man.poznan.pl>
Wed, 22 Apr 2015 09:36:05 +0000 (11:36 +0200)
filex/templates/filex/upload.js.html
plgng/settings_common.py
qcg/middleware.py [new file with mode: 0644]

index e399717..7b64658 100644 (file)
                 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);
             }
         });
index a6c93aa..4d47584 100644 (file)
@@ -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 (file)
index 0000000..d10b927
--- /dev/null
@@ -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)