X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/8b021af276a2eb583fe962098b28459764f84b88..8a3885e1467e4c441721eaae608755a9fd10b33f:/src/social/api/views.py diff --git a/src/social/api/views.py b/src/social/api/views.py index 2a57ad3d4..a2d92ccf6 100644 --- a/src/social/api/views.py +++ b/src/social/api/views.py @@ -1,10 +1,10 @@ # This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Wolne Lektury. See NOTICE for more information. # -from datetime import datetime +from datetime import datetime, timezone from django.db.models import Q from django.http import Http404 -from django.utils.timezone import now, utc +from django.utils.timezone import now from rest_framework.exceptions import MethodNotAllowed from rest_framework.generics import ListAPIView, ListCreateAPIView, RetrieveAPIView, RetrieveUpdateAPIView, RetrieveUpdateDestroyAPIView, get_object_or_404 from rest_framework.permissions import SAFE_METHODS, IsAuthenticated, IsAuthenticatedOrReadOnly @@ -21,7 +21,7 @@ from social.utils import likes from social import models import bookmarks.models from . import serializers -from bookmarks.api.views import BookmarkSerializer +from bookmarks.api.views import BookmarkSerializer, QuoteSerializer @@ -194,7 +194,10 @@ class ListItemListViewV3(ListCreateAPIView): def get_serializer_class(self): if self.request.method == 'GET': - return serializers.UserListItemReadSerializer + if self.request.version < 'v4': + return serializers.UserListItemReadSerializerV3 + else: + return serializers.UserListItemReadSerializer else: return serializers.UserListItemSerializer @@ -215,7 +218,12 @@ class ListItemListViewV3(ListCreateAPIView): @never_cache class ListItemsForBook(ListAPIView): permission_classes = [IsAuthenticated] - serializer_class = serializers.UserListItemReadSerializer + + def get_serializer_class(self): + if self.request.version < 'v4': + return serializers.UserListItemReadSerializerV3 + else: + return serializers.UserListItemReadSerializer def get_queryset(self): book = get_object_or_404(catalogue.models.Book, slug=self.kwargs['book']) @@ -250,7 +258,10 @@ class ListItemViewV3(RetrieveUpdateDestroyAPIView): def get_serializer_class(self): if self.request.method == 'GET': - return serializers.UserListItemReadSerializer + if self.request.version < 'v4': + return serializers.UserListItemReadSerializerV3 + else: + return serializers.UserListItemReadSerializer else: return serializers.UserListItemSerializer @@ -344,7 +355,7 @@ class SyncView(ListAPIView): except: timestamp = 0 - timestamp = datetime.fromtimestamp(timestamp, tz=utc) + timestamp = datetime.fromtimestamp(timestamp, tz=timezone.utc) data = [] return self.get_queryset_for_ts(timestamp) @@ -441,3 +452,11 @@ class BookmarkSyncView(SyncView): if data.get('location'): ret = self.model.get_by_location(user, data['location']) return ret + + +class QuoteSyncView(SyncView): + model = bookmarks.models.Quote + serializer_class = QuoteSerializer + + sync_id_field = 'uuid' + sync_id_serializer_field = 'uuid'