36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
from django.core.exceptions import ValidationError as DjangoValidationError
|
|
from rest_framework import fields, status
|
|
from rest_framework.exceptions import ValidationError
|
|
from rest_framework.response import Response
|
|
from rest_framework.serializers import Serializer
|
|
|
|
from wagtail.actions.unpublish_page import UnpublishPageAction
|
|
|
|
from .base import APIAction
|
|
|
|
|
|
class UnpublishPageAPIActionSerializer(Serializer):
|
|
recursive = fields.BooleanField(default=False, required=False)
|
|
|
|
|
|
class UnpublishPageAPIAction(APIAction):
|
|
serializer = UnpublishPageAPIActionSerializer
|
|
|
|
def _action_from_data(self, instance, data):
|
|
return UnpublishPageAction(
|
|
page=instance,
|
|
user=self.request.user,
|
|
include_descendants=data["recursive"],
|
|
)
|
|
|
|
def execute(self, instance, data):
|
|
action = self._action_from_data(instance, data)
|
|
|
|
try:
|
|
action.execute()
|
|
except DjangoValidationError as e:
|
|
raise ValidationError(e.message_dict)
|
|
|
|
serializer = self.view.get_serializer(instance)
|
|
return Response(serializer.data, status=status.HTTP_200_OK)
|