Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
dj-kaos-utils / drf / viewsets.py
Size: Mime:
from rest_framework.generics import GenericAPIView
from rest_framework.viewsets import ViewSetMixin


class ActionSerializerClassMixin(ViewSetMixin, GenericAPIView):
    serializer_action_classes = {}

    def get_serializer_class(self):
        """
        A class which inherits this mixins should have variable
        `serializer_action_classes`.
        Look for serializer class in self.serializer_action_classes, which
        should be a dict mapping action name (key) to serializer class (value),
        i.e.:
        class SampleViewSet(viewsets.ViewSet):
            serializer_class = DocumentSerializer
            serializer_action_classes = {
               'upload': UploadDocumentSerializer,
               'download': DownloadDocumentSerializer,
            }
            @action
            def upload:
                ...
        If there's no entry for that action then just fallback to the regular
        get_serializer_class lookup: self.serializer_class, DefaultSerializer.
        """
        return self.serializer_action_classes.get(self.action) or super().get_serializer_class()