src/notes/api/views/core.py
author ymh <ymh.work@gmail.com>
Thu, 22 Jun 2017 12:09:48 +0200
changeset 74 043477fd5c5c
parent 68 6e18b31b0ad5
child 83 76a4e4b11762
permissions -rw-r--r--
add api call to save notes. internally use ts for time data for notes and session

import logging

from notes.models import Note, Session
from rest_framework import viewsets

from ..permissions import NotePermission, SessionPermission
from ..serializers.core import (DetailNoteSerializer, 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': 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)