from itertools import islice
+import logging
import mimetypes
import os
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
except FTPError as e:
msg, status = parse_ftp_error(e)
+ logger = logging.getLogger('gridftp')
+ logger.error(e.verbose, extra={'user': request.user, 'path': request.path, 'params': form.cleaned_data})
+
return JsonResponse({'error': msg}, status=status)
setattr(cls, cls.method, process)
for path in params['dirs']:
try:
- ftp.rmdir(url + path)
+ ftp.rmdir(url + urlquote(path))
except FTPError as e:
fail[path] = e.message
else:
for path in params['files']:
try:
- ftp.delete(url + path)
+ ftp.delete(url + urlquote(path))
except FTPError as e:
fail[path] = e.message
else:
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