fix in handling file name with special characters
[qcg-portal.git] / filex / views.py
index 1904d4f..ada8b7b 100644 (file)
@@ -9,6 +9,7 @@ from django.http import JsonResponse, StreamingHttpResponse
 from django.shortcuts import get_object_or_404, render
 from django.template.defaultfilters import filesizeformat
 from django.utils.formats import date_format
+from django.utils.http import urlquote
 from django.views.decorators.http import require_POST
 from django.views.generic import View
 
@@ -112,7 +113,7 @@ class DeleteView(FTPView):
 
         for path in params['dirs']:
             try:
-                ftp.rmdir(url + path)
+                ftp.rmdir(url + urlquote(path))
             except FTPError as e:
                 fail[path] = e.message
             else:
@@ -120,7 +121,7 @@ class DeleteView(FTPView):
 
         for path in params['files']:
             try:
-                ftp.delete(url + path)
+                ftp.delete(url + urlquote(path))
             except FTPError as e:
                 fail[path] = e.message
             else:
@@ -178,7 +179,8 @@ class ExtractView(FTPView):
 
 
 def make_url(params, *parts):
-    return 'gsiftp://{}/{}'.format(params['host'], os.path.join(*[params[part] for part in parts]) if parts else '')
+    return 'gsiftp://{}/{}'.format(params['host'],
+                                   urlquote(os.path.join(*[params[part] for part in parts]), safe='/~') if parts else '')
 
 
 @require_POST