add saving favorite locations
[qcg-portal.git] / filex / views.py
index a85c265..5d23947 100644 (file)
@@ -1,13 +1,16 @@
 import mimetypes
 
+from django.contrib.auth.decorators import login_required
 from django.core.exceptions import PermissionDenied, SuspiciousOperation
 from django.http import JsonResponse, StreamingHttpResponse
+from django.shortcuts import get_object_or_404
 from django.template.defaultfilters import filesizeformat
 from django.utils.formats import date_format
 from django.views.decorators.http import require_POST
-from filex.forms import NewDirForm, RenameForm
 
+from filex.forms import NewDirForm, RenameForm, FavoriteForm
 from filex.ftp import FTPOperation, FTPException
+from filex.models import Favorite
 from filex.uploadhandler import with_ftp_upload_handler
 
 
@@ -231,3 +234,30 @@ def extract(request):
         return JsonResponse({'msg': e.message}, status=400)
     else:
         return JsonResponse({'success': True})
+
+
+@require_POST
+@login_required
+def fav_add(request):
+    data = request.POST.copy()
+    data['owner'] = request.user.id
+
+    form = FavoriteForm(data)
+
+    # TODO check if path exists
+    if form.is_valid():
+        instance = form.save()
+
+        return JsonResponse({'group': 'usr', 'host': instance.host, 'path': instance.path,
+                             'value': instance.host + instance.path})
+
+    return JsonResponse({'msg': form.errors}, status=400)
+
+
+@require_POST
+@login_required
+def fav_delete(request):
+    fav = get_object_or_404(Favorite, owner=request.user, host=request.POST['host'], path=request.POST['path'])
+    fav.delete()
+
+    return JsonResponse({'success': True})