projects
/
qcg-portal.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix ignoring current and parent directory in listing
[qcg-portal.git]
/
filex
/
utils.py
diff --git
a/filex/utils.py
b/filex/utils.py
index
9a96949
..
49c4d79
100644
(file)
--- a/
filex/utils.py
+++ b/
filex/utils.py
@@
-1,21
+1,23
@@
from functools import wraps
from functools import wraps
+import logging
from django.core.validators import RegexValidator
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_protect, csrf_exempt
from filex.ftp import FTPError
from django.core.validators import RegexValidator
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_protect, csrf_exempt
from filex.ftp import FTPError
-from filex.uploadhandler import FtpUploadHandler
-msg = u'Invalid value'
+_msg = u'Invalid value'
host_validator = RegexValidator(r'^(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+'
host_validator = RegexValidator(r'^(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+'
- r'(?:[a-zA-Z]{2,6}\.?|[a-zA-Z0-9-]{2,}(?<!-)\.?))(?::\d+)?$', msg)
-path_validator = RegexValidator(r'^~?(?:/[^/\0]*)*$', msg)
-name_validator = RegexValidator(r'^[^/\0]+$', msg)
+ r'(?:[a-zA-Z]{2,6}\.?|[a-zA-Z0-9-]{2,}(?<!-)\.?))(?::\d+)?$', _msg)
+path_validator = RegexValidator(r'^~?(?:/[^/\0]*)*$', _msg)
+name_validator = RegexValidator(r'^[^/\0]+$', _msg)
def with_ftp_upload_handler(view_func):
def with_ftp_upload_handler(view_func):
+ from filex.uploadhandler import FtpUploadHandler
+
@wraps(view_func)
def wrapped_view(request, *args, **kwargs):
request.upload_handlers = [FtpUploadHandler(request)]
@wraps(view_func)
def wrapped_view(request, *args, **kwargs):
request.upload_handlers = [FtpUploadHandler(request)]
@@
-23,12
+25,23
@@
def with_ftp_upload_handler(view_func):
try:
return csrf_protect(view_func)(request, *args, **kwargs)
except FTPError as e:
try:
return csrf_protect(view_func)(request, *args, **kwargs)
except FTPError as e:
- status = 400
- if 'No such file or directory' in e.message:
- status = 404
- elif 'Permission denied' in e.message:
- status = 403
+ msg, status = parse_ftp_error(e)
+
+ logger = logging.getLogger('gridftp')
+ logger.error(e.verbose,
+ extra={'user': request.user, 'path': request.path, 'params': dict(request.GET.iterlists())})
- return JsonResponse({'error': e.message}, status=status)
+ return JsonResponse({'error': msg}, status=status)
return csrf_exempt(wrapped_view)
return csrf_exempt(wrapped_view)
+
+
+def parse_ftp_error(e):
+ msg, status = e.message, 400
+
+ if 'No such file or directory' in msg:
+ status = 404
+ elif 'Permission denied' in msg:
+ status = 403
+
+ return msg, status