Repository URL to install this package:
Version:
0.3.0a1 ▾
|
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',
)