1 """ |
1 """ |
2 Core viewsets |
2 Core viewsets |
3 """ |
3 """ |
|
4 import datetime |
4 import logging |
5 import logging |
5 |
6 |
|
7 from django.utils import timezone |
6 from notes.models import Note, Session |
8 from notes.models import Note, Session |
7 from rest_framework import viewsets |
9 from rest_framework import viewsets |
8 |
10 |
9 from ..permissions import NotePermission, SessionPermission |
11 from ..permissions import NotePermission, SessionPermission |
10 from ..serializers.core import (DetailNoteSerializer, UpdateNoteSerializer, DetailSessionSerializer, |
12 from ..serializers.core import (CreateNoteSerializer, CreateSessionSerializer, |
11 CreateNoteSerializer, ListNoteSerializer, ListSessionSerializer, |
13 DetailNoteSerializer, DetailSessionSerializer, |
12 CreateSessionSerializer) |
14 ListNoteSerializer, ListSessionSerializer, |
|
15 RootDetailNoteSerializer, |
|
16 RootListNoteSerializer, UpdateNoteSerializer) |
13 |
17 |
14 logger = logging.getLogger(__name__) |
18 logger = logging.getLogger(__name__) |
15 |
19 |
16 |
20 |
17 class SessionViewSet(viewsets.ModelViewSet): |
21 class SessionViewSet(viewsets.ModelViewSet): |
31 |
35 |
32 def get_serializer_class(self): |
36 def get_serializer_class(self): |
33 return self.serializers.get(self.action, ListSessionSerializer) |
37 return self.serializers.get(self.action, ListSessionSerializer) |
34 |
38 |
35 def get_queryset(self): |
39 def get_queryset(self): |
36 return Session.objects.filter(owner=self.request.user) |
40 queryset = Session.objects.filter(owner=self.request.user).order_by('created') |
|
41 modified_since_str = self.request.query_params.get('modified_since', None) |
|
42 if modified_since_str is not None: |
|
43 modified_since = datetime.datetime.fromtimestamp( |
|
44 float(modified_since_str), |
|
45 timezone.utc |
|
46 ) |
|
47 queryset = queryset.filter(updated__gte=modified_since) |
|
48 return queryset |
37 |
49 |
38 |
50 |
39 class NoteViewSet(viewsets.ModelViewSet): |
51 class NoteViewSet(viewsets.ModelViewSet): |
40 |
52 |
41 serializers = { |
53 serializers = { |
45 'update': UpdateNoteSerializer, |
57 'update': UpdateNoteSerializer, |
46 } |
58 } |
47 lookup_field = 'ext_id' |
59 lookup_field = 'ext_id' |
48 |
60 |
49 permission_classes = (NotePermission,) |
61 permission_classes = (NotePermission,) |
|
62 pagination_class = None |
50 |
63 |
51 def get_serializer_class(self): |
64 def get_serializer_class(self): |
52 return self.serializers.get(self.action, ListNoteSerializer) |
65 return self.serializers.get(self.action, ListNoteSerializer) |
53 |
66 |
54 def get_queryset(self): |
67 def get_queryset(self): |
55 return Note.objects.filter( |
68 return Note.objects.filter( |
56 session__ext_id=self.kwargs['session_ext_id'], |
69 session__ext_id=self.kwargs['session_ext_id'], |
57 session__owner=self.request.user) |
70 session__owner=self.request.user) |
|
71 |
|
72 |
|
73 class RootNoteViewSet(viewsets.ReadOnlyModelViewSet): |
|
74 |
|
75 serializers = { |
|
76 'list': RootListNoteSerializer, |
|
77 'retrieve': RootDetailNoteSerializer, |
|
78 } |
|
79 lookup_field = 'ext_id' |
|
80 |
|
81 permission_classes = (NotePermission,) |
|
82 |
|
83 def get_serializer_class(self): |
|
84 return self.serializers.get(self.action, RootListNoteSerializer) |
|
85 |
|
86 def get_queryset(self): |
|
87 queryset = Note.objects.filter(session__owner=self.request.user).order_by('created') |
|
88 modified_since_str = self.request.query_params.get('modified_since', None) |
|
89 if modified_since_str is not None: |
|
90 modified_since = datetime.datetime.fromtimestamp( |
|
91 float(modified_since_str), |
|
92 timezone.utc |
|
93 ) |
|
94 queryset = queryset.filter(updated__gte=modified_since) |
|
95 return queryset |