src/notes/api/views/core.py
author Alexandre Segura <mex.zktk@gmail.com>
Tue, 27 Jun 2017 18:11:40 +0200
changeset 99 18fa4a1fa9e9
parent 83 76a4e4b11762
child 117 9864fe2067cd
permissions -rw-r--r--
Add group endpoint.

import logging

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

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)