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 / building_blocks / rest.py
Size: Mime:
from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework.response import Response

from .models import ArchivableModel


class ArchivableViewSetMixin(viewsets.GenericViewSet):
    @action(detail=True)
    def archive(self, request, *args, **kwargs):
        instance: ArchivableModel = self.get_object()
        instance.archive()
        instance.save()
        return Response(data=self.serializer_class(instance).data)

    @action(detail=True)
    def restore(self, request, *args, **kwargs):
        instance: ArchivableModel = self.get_object()
        instance.archive()
        instance.save()
        return Response(data=self.serializer_class(instance).data)

    @action(detail=False)
    def archive(self, request, *args, **kwargs):
        count = self.get_queryset().filter(**request.GET).archive()
        return Response(data={'count': count})

    @action(detail=False)
    def restore(self, request, *args, **kwargs):
        count = self.get_queryset().filter(**request.GET).restore()
        return Response(data={'count': count})


__all__ = (
    'ArchivableViewSetMixin',
)