12345678910111213141516171819202122232425262728293031323334 |
- from django.views.generic import TemplateView
- from wagtail.admin.userbar import (
- Userbar,
- )
- from wagtail_headless_preview.models import HeadlessMixin
- from wagtail_headless_preview.settings import headless_preview_settings
- class CustomHeadlessMixin(HeadlessMixin):
- def get_client_root_url(self, request):
- """
- Use a dedicated API endpoint for drafts.
- By default, the method uses the root URL of the client site.
- """
- root_url = super().get_client_root_url(request)
- if getattr(request, "is_preview", False):
- return f"{root_url}/api/draft"
- return root_url
- class UserbarView(TemplateView):
- template_name = Userbar.template_name
- http_method_names = ["get"]
- def dispatch(self, request, *args, **kwargs):
- response = super().dispatch(request, *args, **kwargs)
- client_url = headless_preview_settings.CLIENT_URLS["default"]
- response["Access-Control-Allow-Origin"] = client_url
- return response
- def get_context_data(self, **kwargs):
- return Userbar(object=None, position="bottom-left").get_context_data(
- super().get_context_data(request=self.request, **kwargs)
- )
|