Browse Source

Move no_results_message to a cached_property in BaseListingView

Sage Abdullah 6 months ago
parent
commit
9d8507bc37

+ 1 - 16
wagtail/admin/templates/wagtailadmin/generic/listing_results.html

@@ -49,23 +49,8 @@
     {% endblock %}
 {% else %}
     <div class="nice-padding w-mt-8">
-        {% fragment as no_results_message %}
-            {% if not verbose_name_plural %}
-                {% trans "There are no results." as no_results_text %}
-            {% elif is_searching or is_filtering %}
-                {% blocktrans trimmed with model_name=verbose_name_plural asvar no_results_text %}
-                    No {{ model_name }} match your query.
-                {% endblocktrans %}
-            {% else %}
-                {% blocktrans trimmed with model_name=verbose_name_plural asvar no_results_text %}
-                    There are no {{ model_name }} to display.
-                {% endblocktrans %}
-            {% endif %}
-            {{ no_results_text|capfirst }}
-        {% endfragment %}
-
         {% block no_results_message %}
-            <p>{{ no_results_message }}</p>
+            <p>{{ no_results_message|capfirst }}</p>
         {% endblock %}
     </div>
 {% endif %}

+ 15 - 0
wagtail/admin/views/generic/base.py

@@ -529,6 +529,20 @@ class BaseListingView(WagtailAdminTemplateMixin, BaseListView):
         if self.index_results_url_name:
             return reverse(self.index_results_url_name)
 
+    @cached_property
+    def no_results_message(self):
+        if not self.verbose_name_plural:
+            return _("There are no results.")
+
+        if self.is_searching or self.is_filtering:
+            return _("No %(model_name)s match your query.") % {
+                "model_name": self.verbose_name_plural
+            }
+
+        return _("There are no %(model_name)s to display.") % {
+            "model_name": self.verbose_name_plural
+        }
+
     def get_context_data(self, *args, **kwargs):
         context = super().get_context_data(*args, **kwargs)
 
@@ -537,6 +551,7 @@ class BaseListingView(WagtailAdminTemplateMixin, BaseListView):
         context["index_url"] = self.index_url
         context["index_results_url"] = self.index_results_url
         context["verbose_name_plural"] = self.verbose_name_plural
+        context["no_results_message"] = self.no_results_message
         context["ordering"] = self.ordering
         context["table"] = table
         context["media"] = table.media