file upload to gridftp
[qcg-portal.git] / filex / uploadhandler.py
index 20a1339..0f5bfb3 100644 (file)
@@ -1,5 +1,8 @@
+from functools import wraps
+
 from django.core.files.uploadedfile import UploadedFile
 from django.core.files.uploadhandler import FileUploadHandler, StopUpload, StopFutureHandlers
+from django.views.decorators.csrf import csrf_exempt, csrf_protect
 
 from filex.ftp import FTPOperation
 
@@ -35,3 +38,13 @@ class FtpUploadHandler(FileUploadHandler):
 
         return UploadedFile(name=self.file_name, size=file_size, charset=self.charset,
                             content_type=self.content_type, content_type_extra=self.content_type_extra)
+
+
+def with_ftp_upload_handler(view_func):
+    @wraps(view_func)
+    def wrapped_view(request, *args, **kwargs):
+        request.upload_handlers = [FtpUploadHandler(request)]
+
+        return csrf_protect(view_func)(request, *args, **kwargs)
+
+    return csrf_exempt(wrapped_view)