Files
old-saburly-wagtail-web/env/lib/python3.10/site-packages/wagtail/admin/api/actions/unpublish.py
2024-08-27 20:33:44 +02:00

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)