From 76285e3a7920544719fc6bc6cb760fef89611732 Mon Sep 17 00:00:00 2001 From: David Szotten Date: Tue, 28 Jan 2025 17:44:49 +0000 Subject: [PATCH] Fix `get_client_root_url` when no Site is set --- CHANGELOG.md | 1 + src/wagtail_headless_preview/models.py | 2 +- tests/test_frontend.py | 14 +++++++++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bbcc51a..5d63a4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add tox testing for Django 5.1 and Wagtail 6.2 + 6.3 - Drop testing for Python 3.8 +- Fix `get_client_root_url` when no Site is set ## [0.8] - 2024-02-23 diff --git a/src/wagtail_headless_preview/models.py b/src/wagtail_headless_preview/models.py index 857c7bb..ef56a50 100644 --- a/src/wagtail_headless_preview/models.py +++ b/src/wagtail_headless_preview/models.py @@ -50,7 +50,7 @@ def get_client_root_url_from_site(site) -> str: root_url = headless_preview_settings.CLIENT_URLS[site.hostname] except (AttributeError, KeyError): root_url = headless_preview_settings.CLIENT_URLS["default"].format( - SITE_ROOT_URL=site.root_url + SITE_ROOT_URL=getattr(site, "root_url", "") ) if headless_preview_settings.ENFORCE_TRAILING_SLASH: diff --git a/tests/test_frontend.py b/tests/test_frontend.py index 64f325c..3e055fe 100644 --- a/tests/test_frontend.py +++ b/tests/test_frontend.py @@ -2,7 +2,7 @@ from django.test import RequestFactory, TestCase, override_settings from django.urls import reverse from django.utils.http import urlencode -from wagtail.models import Page +from wagtail.models import Page, Site from tests.testapp.models import HeadlessPage, SimplePage from wagtail_headless_preview.models import PagePreview @@ -109,6 +109,18 @@ def test_get_client_root_url_without_trailing_slash_enforcement(self): "https://headless.site", ) + @override_settings( + WAGTAIL_HEADLESS_PREVIEW={ + "CLIENT_URLS": {"default": "https://headless.site"}, + } + ) + def test_get_client_root_url_with_no_site(self): + Site.objects.all().delete() + self.assertEqual( + self.page.get_client_root_url(self.request), + "https://headless.site/", + ) + @override_settings( WAGTAIL_HEADLESS_PREVIEW={"SERVE_BASE_URL": "https://headless.site"}, TEST_OVERRIDE_CLIENT_ROOT_URL=True,