fix imports
[wolnelektury.git] / src / social / api / views.py
index b10ea56..402245d 100644 (file)
@@ -2,9 +2,8 @@
 # Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
 #
 from datetime import datetime
 # Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
 #
 from datetime import datetime
-from pytz import utc
 from django.http import Http404
 from django.http import Http404
-from django.utils.timezone import now
+from django.utils.timezone import now, utc
 from rest_framework.generics import ListAPIView, ListCreateAPIView, RetrieveAPIView, RetrieveUpdateAPIView, RetrieveUpdateDestroyAPIView, get_object_or_404
 from rest_framework.permissions import IsAuthenticated, IsAuthenticatedOrReadOnly
 from rest_framework.response import Response
 from rest_framework.generics import ListAPIView, ListCreateAPIView, RetrieveAPIView, RetrieveUpdateAPIView, RetrieveUpdateDestroyAPIView, get_object_or_404
 from rest_framework.permissions import IsAuthenticated, IsAuthenticatedOrReadOnly
 from rest_framework.response import Response
@@ -17,11 +16,26 @@ from catalogue.api.serializers import BookSerializer
 from catalogue.models import Book
 import catalogue.models
 from social.views import get_sets_for_book_ids
 from catalogue.models import Book
 import catalogue.models
 from social.views import get_sets_for_book_ids
+from social.utils import likes
 from social import models
 import bookmarks.models
 from bookmarks.api.views import BookmarkSerializer
 
 
 from social import models
 import bookmarks.models
 from bookmarks.api.views import BookmarkSerializer
 
 
+class SettingsSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = models.UserProfile
+        fields = ['notifications']
+
+
+class SettingsView(RetrieveUpdateAPIView):
+    permission_classes = [IsAuthenticated]
+    serializer_class = SettingsSerializer
+
+    def get_object(self):
+        return models.UserProfile.get_for(self.request.user)
+
+
 @never_cache
 class LikeView(APIView):
     permission_classes = [IsAuthenticated]
 @never_cache
 class LikeView(APIView):
     permission_classes = [IsAuthenticated]
@@ -403,6 +417,8 @@ class SyncView(ListAPIView):
     def post(self, request):
         new_ids = []
         data = request.data
     def post(self, request):
         new_ids = []
         data = request.data
+        if not isinstance(data, list):
+            raise serializers.ValidationError('Payload should be a list')
         for item in data:
             instance = self.get_instance(request.user, item)
             ser = self.get_serializer(
         for item in data:
             instance = self.get_instance(request.user, item)
             ser = self.get_serializer(
@@ -463,8 +479,9 @@ class BookmarkSyncView(SyncView):
     sync_id_field = 'uuid'
     sync_id_serializer_field = 'uuid'
 
     sync_id_field = 'uuid'
     sync_id_serializer_field = 'uuid'
 
-    def get_queryset_for_ts(self, timestamp):
-        return self.model.objects.filter(
-            user=self.request.user,
-            created_at__gt=timestamp
-        ).order_by('created_at')
+    def get_instance(self, user, data):
+        ret = super().get_instance(user, data)
+        if ret is None:
+            if data.get('location'):
+                ret = self.model.get_by_location(user, data['location'])
+        return ret