From 844efa696a1f6a59b5912b239f8f1cd7646b3e2c Mon Sep 17 00:00:00 2001 From: "Kyle J. Roux" Date: Sat, 2 Apr 2022 16:23:49 -0700 Subject: [PATCH] Ensure thumb_col_header_text is used by ThumbnailMixin correctly - fixes #8269 because you cannot dynamically set attributes on bound methods, we need to update the current classes version of admin_thumb so it can be accessed in sub classes --- CHANGELOG.txt | 1 + CONTRIBUTORS.rst | 1 + docs/releases/3.0.md | 1 + wagtail/contrib/modeladmin/mixins.py | 3 +-- .../contrib/modeladmin/tests/test_simple_modeladmin.py | 10 ++++++++++ wagtail/test/modeladmintest/wagtail_hooks.py | 1 + 6 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index a179f29ef3..2c473b9bf9 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -58,6 +58,7 @@ Changelog * Fix: Stop skipping heading levels in Wagtail welcome page (Jesse Menn) * Fix: Add missing `lang` attributes to `` elements (James Ray) * Fix: Avoid 503 server error when entering tags over 100chars and instead show a user facing validation error (Vu Pham, Khanh Hoang) + * Fix: Ensure `thumb_col_header_text` is correctly used by `ThumbnailMixin` within `ModelAdmin` as the column header label (Kyle J. Roux) 2.16.2 (xx.xx.xxxx) - IN DEVELOPMENT diff --git a/CONTRIBUTORS.rst b/CONTRIBUTORS.rst index e1c17d9681..4b2b5e75fd 100644 --- a/CONTRIBUTORS.rst +++ b/CONTRIBUTORS.rst @@ -588,6 +588,7 @@ Contributors * Caio Jhonny * Heather White * Onno Timmerman +* Kyle J. Roux Translators =========== diff --git a/docs/releases/3.0.md b/docs/releases/3.0.md index d9e0420d94..5aa10ffce9 100644 --- a/docs/releases/3.0.md +++ b/docs/releases/3.0.md @@ -93,6 +93,7 @@ class LandingPage(Page): * Add missing `lang` attributes to `` elements (James Ray) * Add missing translation usage in Workflow templates (Anuja Verma, Saurabh Kumar) * Avoid 503 server error when entering tags over 100chars and instead show a user facing validation error (Vu Pham, Khanh Hoang) + * Ensure `thumb_col_header_text` is correctly used by `ThumbnailMixin` within `ModelAdmin` as the column header label (Kyle J. Roux) ## Upgrade considerations diff --git a/wagtail/contrib/modeladmin/mixins.py b/wagtail/contrib/modeladmin/mixins.py index a73398d479..9e942c6959 100644 --- a/wagtail/contrib/modeladmin/mixins.py +++ b/wagtail/contrib/modeladmin/mixins.py @@ -25,6 +25,7 @@ class ThumbnailMixin: "The `wagtail.images` app must be installed in order " "to use the `ThumbnailMixin` class." ) + self.__class__.admin_thumb.short_description = self.thumb_col_header_text super().__init__(*args, **kwargs) def admin_thumb(self, obj): @@ -53,5 +54,3 @@ class ThumbnailMixin: rendition = get_rendition_or_not_found(image, spec) img_attrs.update({"src": rendition.url}) return mark_safe("".format(flatatt(img_attrs))) - - admin_thumb.short_description = thumb_col_header_text diff --git a/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py b/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py index 69acf070dd..06f4965319 100644 --- a/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py +++ b/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py @@ -43,6 +43,16 @@ class TestBookIndexView(TestCase, WagtailTestUtils): def get(self, **params): return self.client.get("/admin/modeladmintest/book/", params) + def test_thumbnail_image_col_header_text(self): + response = self.get() + + # check thumb_col_header_text is correctly used + self.assertContains( + response, + 'The cover', + html=True, + ) + def test_simple(self): response = self.get() diff --git a/wagtail/test/modeladmintest/wagtail_hooks.py b/wagtail/test/modeladmintest/wagtail_hooks.py index eb24f12271..325a446b29 100644 --- a/wagtail/test/modeladmintest/wagtail_hooks.py +++ b/wagtail/test/modeladmintest/wagtail_hooks.py @@ -84,6 +84,7 @@ class BookModelAdmin(ThumbnailMixin, ModelAdmin): inspect_view_enabled = True inspect_view_fields_exclude = ("title",) thumb_image_field_name = "cover_image" + thumb_col_header_text = "The cover" search_handler_class = WagtailBackendSearchHandler prepopulated_fields = {"title": ("author",)}