--- a/src/notes/api/views/core.py Tue Jul 18 17:59:28 2017 +0200
+++ b/src/notes/api/views/core.py Wed Jul 19 15:57:13 2017 +0200
@@ -1,15 +1,19 @@
"""
Core viewsets
"""
+import datetime
import logging
+from django.utils import timezone
from notes.models import Note, Session
from rest_framework import viewsets
from ..permissions import NotePermission, SessionPermission
-from ..serializers.core import (DetailNoteSerializer, UpdateNoteSerializer, DetailSessionSerializer,
- CreateNoteSerializer, ListNoteSerializer, ListSessionSerializer,
- CreateSessionSerializer)
+from ..serializers.core import (CreateNoteSerializer, CreateSessionSerializer,
+ DetailNoteSerializer, DetailSessionSerializer,
+ ListNoteSerializer, ListSessionSerializer,
+ RootDetailNoteSerializer,
+ RootListNoteSerializer, UpdateNoteSerializer)
logger = logging.getLogger(__name__)
@@ -33,7 +37,15 @@
return self.serializers.get(self.action, ListSessionSerializer)
def get_queryset(self):
- return Session.objects.filter(owner=self.request.user)
+ queryset = Session.objects.filter(owner=self.request.user).order_by('created')
+ modified_since_str = self.request.query_params.get('modified_since', None)
+ if modified_since_str is not None:
+ modified_since = datetime.datetime.fromtimestamp(
+ float(modified_since_str),
+ timezone.utc
+ )
+ queryset = queryset.filter(updated__gte=modified_since)
+ return queryset
class NoteViewSet(viewsets.ModelViewSet):
@@ -47,6 +59,7 @@
lookup_field = 'ext_id'
permission_classes = (NotePermission,)
+ pagination_class = None
def get_serializer_class(self):
return self.serializers.get(self.action, ListNoteSerializer)
@@ -55,3 +68,28 @@
return Note.objects.filter(
session__ext_id=self.kwargs['session_ext_id'],
session__owner=self.request.user)
+
+
+class RootNoteViewSet(viewsets.ReadOnlyModelViewSet):
+
+ serializers = {
+ 'list': RootListNoteSerializer,
+ 'retrieve': RootDetailNoteSerializer,
+ }
+ lookup_field = 'ext_id'
+
+ permission_classes = (NotePermission,)
+
+ def get_serializer_class(self):
+ return self.serializers.get(self.action, RootListNoteSerializer)
+
+ def get_queryset(self):
+ queryset = Note.objects.filter(session__owner=self.request.user).order_by('created')
+ modified_since_str = self.request.query_params.get('modified_since', None)
+ if modified_since_str is not None:
+ modified_since = datetime.datetime.fromtimestamp(
+ float(modified_since_str),
+ timezone.utc
+ )
+ queryset = queryset.filter(updated__gte=modified_since)
+ return queryset