2
0

headless.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. from django.views.generic import TemplateView
  2. from wagtail.admin.userbar import (
  3. Userbar,
  4. )
  5. from wagtail_headless_preview.models import HeadlessMixin
  6. from wagtail_headless_preview.settings import headless_preview_settings
  7. class CustomHeadlessMixin(HeadlessMixin):
  8. def get_client_root_url(self, request):
  9. """
  10. Use a dedicated API endpoint for drafts.
  11. By default, the method uses the root URL of the client site.
  12. """
  13. root_url = super().get_client_root_url(request)
  14. if getattr(request, "is_preview", False):
  15. return f"{root_url}/api/draft"
  16. return root_url
  17. class UserbarView(TemplateView):
  18. template_name = Userbar.template_name
  19. http_method_names = ["get"]
  20. def dispatch(self, request, *args, **kwargs):
  21. response = super().dispatch(request, *args, **kwargs)
  22. client_url = headless_preview_settings.CLIENT_URLS["default"]
  23. response["Access-Control-Allow-Origin"] = client_url
  24. return response
  25. def get_context_data(self, **kwargs):
  26. return Userbar(object=None, position="bottom-left").get_context_data(
  27. super().get_context_data(request=self.request, **kwargs)
  28. )