src/notes/api/views/core.py
author ymh <ymh.work@gmail.com>
Fri, 23 Jun 2017 17:58:21 +0200
changeset 83 76a4e4b11762
parent 74 043477fd5c5c
child 99 18fa4a1fa9e9
permissions -rw-r--r--
add server request for note update and delete

import logging

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)

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,
        'create':  CreateSessionSerializer,
    }

    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': CreateNoteSerializer,
        'update': UpdateNoteSerializer,
    }
    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)