From 4c8ea0e54c4b03088938727d702be1aa3f503cf3 Mon Sep 17 00:00:00 2001
From: Sage Abdullah <sage.abdullah@torchbox.com>
Date: Wed, 15 Jan 2025 12:25:27 +0000
Subject: [PATCH] Move default block preview template definition to
 Block.DEFAULT_PREVIEW_TEMPLATE

---
 wagtail/admin/views/generic/preview.py | 8 +-------
 wagtail/blocks/base.py                 | 8 ++++++--
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/wagtail/admin/views/generic/preview.py b/wagtail/admin/views/generic/preview.py
index b0eff1599e..63d0d0ed1e 100644
--- a/wagtail/admin/views/generic/preview.py
+++ b/wagtail/admin/views/generic/preview.py
@@ -170,7 +170,6 @@ class PreviewRevision(View):
 
 @method_decorator(xframe_options_sameorigin_override, name="get")
 class StreamFieldBlockPreview(TemplateView):
-    template_name = "wagtailcore/shared/block_preview.html"
     http_method_names = ("get",)
 
     @cached_property
@@ -207,12 +206,7 @@ class StreamFieldBlockPreview(TemplateView):
         }
 
     def get_template_names(self):
-        templates = [self.template_name]
-        if preview_template := self.block_def.get_preview_template(
-            self.block_value, self.base_context
-        ):
-            templates.insert(0, preview_template)
-        return templates
+        return self.block_def.get_preview_template(self.block_value, self.base_context)
 
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
diff --git a/wagtail/blocks/base.py b/wagtail/blocks/base.py
index f7d940e4b2..e0128ba9af 100644
--- a/wagtail/blocks/base.py
+++ b/wagtail/blocks/base.py
@@ -59,6 +59,7 @@ class Block(metaclass=BaseBlock):
     definition_registry = {}
 
     TEMPLATE_VAR = "value"
+    DEFAULT_PREVIEW_TEMPLATE = "wagtailcore/shared/block_preview.html"
 
     class Meta:
         label = None
@@ -287,7 +288,10 @@ class Block(metaclass=BaseBlock):
         #
         # Instead, the default preview template uses `{% include_block %}`,
         # which will use `get_template` if a template is defined.
-        return getattr(self.meta, "preview_template", None)
+        return (
+            getattr(self.meta, "preview_template", None)
+            or self.DEFAULT_PREVIEW_TEMPLATE
+        )
 
     def get_preview_value(self):
         if hasattr(self.meta, "preview_value"):
@@ -315,7 +319,7 @@ class Block(metaclass=BaseBlock):
             or self.__class__.get_preview_value is not Block.get_preview_value
         )
         has_global_template = template_is_overridden(
-            "wagtailcore/shared/block_preview.html",
+            self.DEFAULT_PREVIEW_TEMPLATE,
             "templates",
         )
         return has_specific_template or (has_preview_value and has_global_template)