diff -r 4d93f4ed95bc -r 63be3ce389f7 src/notes/api/views/core.py --- /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)