-from datetime import datetime
+import mimetypes
from django.core.exceptions import PermissionDenied, SuspiciousOperation
from django.http import JsonResponse, StreamingHttpResponse
from django.template.defaultfilters import filesizeformat
from django.utils.formats import date_format
-from django.utils.timezone import UTC, localtime
-import mimetypes
from filex.ftp import FTPOperation, FTPException
+from filex.uploadhandler import with_ftp_upload_handler
def check_auth(request):
except FTPException as e:
return JsonResponse({'msg': e.message}, status=400)
- data = []
-
- # ignore first two: '.' and '..'
- for item in listing.strip().splitlines()[2:]:
- # we may receive empty string when there are multiple consecutive newlines in listing
- if item:
- attrs, name = item.split(' ', 1)
-
- attrs = dict((attr.split('=') for attr in attrs.split(';') if attr))
+ for item in listing:
+ item['size'] = filesizeformat(item['size'])
+ item['date'] = date_format(item['date'], 'DATETIME_FORMAT')
- date = localtime(datetime.strptime(attrs['Modify'], "%Y%m%d%H%M%S").replace(tzinfo=UTC()))
-
- data.append({
- 'name': name,
- 'type': 'file' if attrs['Type'] == 'file' else 'directory',
- 'size': filesizeformat(attrs['Size']),
- 'date': date_format(date, 'DATETIME_FORMAT'),
- })
-
- return JsonResponse(data, safe=False)
+ return JsonResponse(listing, safe=False)
def download(request):
response['Content-Encoding'] = encoding
return response
+
+
+@with_ftp_upload_handler
+def upload(request):
+ # TODO error handling
+ return JsonResponse({'success': True})