src/notes/api/views/core.py
changeset 31 63be3ce389f7
child 68 6e18b31b0ad5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/notes/api/views/core.py	Wed Jun 14 15:17:51 2017 +0200
@@ -0,0 +1,52 @@
+import logging
+
+from notes.models import Note, Session
+from rest_framework import viewsets
+
+from ..permissions import NotePermission, SessionPermission
+from ..serializers.core import (DetailNoteSerializer, DetailSessionSerializer,
+                                ListNoteSerializer, ListSessionSerializer)
+
+logger = logging.getLogger(__name__)
+
+
+class SessionViewSet(viewsets.ModelViewSet):
+    """
+    API endpoint that allow sessions ro be viewed or edited
+    """
+    serializer_class = ListSessionSerializer
+    lookup_field = 'ext_id'
+
+    serializers = {
+        'list': ListSessionSerializer,
+        'retrieve':  DetailSessionSerializer,
+    }
+
+    permission_classes = (SessionPermission,)
+
+    def get_serializer_class(self):
+        return self.serializers.get(self.action, ListSessionSerializer)
+
+    def get_queryset(self):
+        return Session.objects.filter(owner=self.request.user)
+
+
+class NoteViewSet(viewsets.ModelViewSet):
+
+    serializers = {
+        'list': ListNoteSerializer,
+        'retrieve': DetailNoteSerializer,
+        'create': DetailNoteSerializer,
+        'update': DetailNoteSerializer,
+    }
+    lookup_field = 'ext_id'
+
+    permission_classes = (NotePermission,)
+
+    def get_serializer_class(self):
+        return self.serializers.get(self.action, ListNoteSerializer)
+
+    def get_queryset(self):
+        return Note.objects.filter(
+            session__ext_id=self.kwargs['session_ext_id'],
+            session__owner=self.request.user)