move parsing mlst data to FTPOperation class
[qcg-portal.git] / filex / views.py
index 2bda5c8..6dd2d9f 100644 (file)
@@ -1,13 +1,12 @@
-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):
@@ -33,26 +32,11 @@ def list_content(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):
@@ -78,3 +62,9 @@ def download(request):
         response['Content-Encoding'] = encoding
 
     return response
+
+
+@with_ftp_upload_handler
+def upload(request):
+    # TODO error handling
+    return JsonResponse({'success': True})