src/notes/api/views/core.py
changeset 31 63be3ce389f7
child 68 6e18b31b0ad5
equal deleted inserted replaced
30:4d93f4ed95bc 31:63be3ce389f7
       
     1 import logging
       
     2 
       
     3 from notes.models import Note, Session
       
     4 from rest_framework import viewsets
       
     5 
       
     6 from ..permissions import NotePermission, SessionPermission
       
     7 from ..serializers.core import (DetailNoteSerializer, DetailSessionSerializer,
       
     8                                 ListNoteSerializer, ListSessionSerializer)
       
     9 
       
    10 logger = logging.getLogger(__name__)
       
    11 
       
    12 
       
    13 class SessionViewSet(viewsets.ModelViewSet):
       
    14     """
       
    15     API endpoint that allow sessions ro be viewed or edited
       
    16     """
       
    17     serializer_class = ListSessionSerializer
       
    18     lookup_field = 'ext_id'
       
    19 
       
    20     serializers = {
       
    21         'list': ListSessionSerializer,
       
    22         'retrieve':  DetailSessionSerializer,
       
    23     }
       
    24 
       
    25     permission_classes = (SessionPermission,)
       
    26 
       
    27     def get_serializer_class(self):
       
    28         return self.serializers.get(self.action, ListSessionSerializer)
       
    29 
       
    30     def get_queryset(self):
       
    31         return Session.objects.filter(owner=self.request.user)
       
    32 
       
    33 
       
    34 class NoteViewSet(viewsets.ModelViewSet):
       
    35 
       
    36     serializers = {
       
    37         'list': ListNoteSerializer,
       
    38         'retrieve': DetailNoteSerializer,
       
    39         'create': DetailNoteSerializer,
       
    40         'update': DetailNoteSerializer,
       
    41     }
       
    42     lookup_field = 'ext_id'
       
    43 
       
    44     permission_classes = (NotePermission,)
       
    45 
       
    46     def get_serializer_class(self):
       
    47         return self.serializers.get(self.action, ListNoteSerializer)
       
    48 
       
    49     def get_queryset(self):
       
    50         return Note.objects.filter(
       
    51             session__ext_id=self.kwargs['session_ext_id'],
       
    52             session__owner=self.request.user)