From 3ba4064d8921e11d6aeed45a1e295f7a5bef4acb Mon Sep 17 00:00:00 2001 From: Yannick Chabbert Date: Fri, 3 Jun 2016 13:44:43 +0200 Subject: [PATCH] fix modeladmin delete view message --- CHANGELOG.txt | 1 + docs/releases/1.5.1.rst | 1 + .../tests/test_simple_modeladmin.py | 11 ++++++++++ wagtail/contrib/modeladmin/views.py | 7 +++---- .../fixtures/modeladmintest_test.json | 7 +++++++ .../modeladmintest/migrations/0002_token.py | 21 +++++++++++++++++++ wagtail/tests/modeladmintest/models.py | 8 +++++++ wagtail/tests/modeladmintest/wagtail_hooks.py | 8 ++++++- 8 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 wagtail/tests/modeladmintest/migrations/0002_token.py diff --git a/CHANGELOG.txt b/CHANGELOG.txt index de84f49fa6..cd6db0faf7 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -72,6 +72,7 @@ Changelog * Fix: Fixed UnicodeEncodeError in wagtailforms when downloading a CSV for a form containing non-ASCII field labels on Python 2 (Mikalai Radchuk) * Fix: Server errors during search indexing on creating / updating / deleting a model are now logged, rather than causing the overall operation to fail (Karl Hobley) * Fix: Objects are now correctly removed from search indexes on deletion (Karl Hobley) + * Fix: Confirmation message on the ModelAdmin delete view no longer errors if the model's string representation depends on the primary key (Yannick Chabbert) 1.4.5 (19.05.2016) diff --git a/docs/releases/1.5.1.rst b/docs/releases/1.5.1.rst index a5599dd768..9e5afea1c4 100644 --- a/docs/releases/1.5.1.rst +++ b/docs/releases/1.5.1.rst @@ -22,3 +22,4 @@ Bug fixes * Now page chooser (in a rich text editor) opens up at the link's parent page, rather than at the page itself (Matt Westcott) * Reverted fix for explorer menu scrolling with page content, as it blocked access to menus that exceed screen height * Image listing in the image chooser no longer becomes unpaginated after an invalid upload form submission (Stephen Rice) + * Confirmation message on the ModelAdmin delete view no longer errors if the model's string representation depends on the primary key (Yannick Chabbert) diff --git a/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py b/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py index c459533396..5230e6e1f5 100644 --- a/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py +++ b/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py @@ -316,6 +316,17 @@ class TestDeleteViewWithProtectedRelation(TestCase, WagtailTestUtils): self.assertFalse(Author.objects.filter(id=4).exists()) +class TestDeleteViewModelReprPrimary(TestCase, WagtailTestUtils): + fixtures = ['modeladmintest_test.json'] + + def setUp(self): + self.login() + + def test_delete(self): + response = self.client.post('/admin/modeladmintest/token/delete/boom/') + self.assertEqual(response.status_code, 302) + + class TestEditorAccess(TestCase): fixtures = ['modeladmintest_test.json'] expected_status_code = 403 diff --git a/wagtail/contrib/modeladmin/views.py b/wagtail/contrib/modeladmin/views.py index ca6f7fc407..ba4d0ae2a9 100644 --- a/wagtail/contrib/modeladmin/views.py +++ b/wagtail/contrib/modeladmin/views.py @@ -778,11 +778,10 @@ class DeleteView(InstanceSpecificView): def post(self, request, *args, **kwargs): try: + msg = _("{model} '{instance}' deleted.").format( + model=self.verbose_name, instance=self.instance) self.delete_instance() - messages.success( - request, - _("{model} '{instance}' deleted.").format( - model=self.verbose_name, instance=self.instance)) + messages.success(request, msg) return redirect(self.index_url) except models.ProtectedError: linked_objects = [] diff --git a/wagtail/tests/modeladmintest/fixtures/modeladmintest_test.json b/wagtail/tests/modeladmintest/fixtures/modeladmintest_test.json index 4a240f7580..ef78942f47 100644 --- a/wagtail/tests/modeladmintest/fixtures/modeladmintest_test.json +++ b/wagtail/tests/modeladmintest/fixtures/modeladmintest_test.json @@ -62,5 +62,12 @@ "title": "The Chronicles of Narnia", "author_id": 3 } +}, +{ + "pk": "boom", + "model": "modeladmintest.token", + "fields": { + "key": "boom" + } } ] diff --git a/wagtail/tests/modeladmintest/migrations/0002_token.py b/wagtail/tests/modeladmintest/migrations/0002_token.py new file mode 100644 index 0000000000..bf829f0c52 --- /dev/null +++ b/wagtail/tests/modeladmintest/migrations/0002_token.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-06-07 11:22 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('modeladmintest', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Token', + fields=[ + ('key', models.CharField(max_length=40, primary_key=True, serialize=False)), + ], + ), + ] diff --git a/wagtail/tests/modeladmintest/models.py b/wagtail/tests/modeladmintest/models.py index 30034e1be5..5daef59c45 100644 --- a/wagtail/tests/modeladmintest/models.py +++ b/wagtail/tests/modeladmintest/models.py @@ -22,3 +22,11 @@ class Book(models.Model, index.Indexed): def __str__(self): return self.title + + +@python_2_unicode_compatible +class Token(models.Model): + key = models.CharField(max_length=40, primary_key=True) + + def __str__(self): + return self.key diff --git a/wagtail/tests/modeladmintest/wagtail_hooks.py b/wagtail/tests/modeladmintest/wagtail_hooks.py index 1495147066..f0e27b87bd 100644 --- a/wagtail/tests/modeladmintest/wagtail_hooks.py +++ b/wagtail/tests/modeladmintest/wagtail_hooks.py @@ -3,7 +3,7 @@ from __future__ import absolute_import, unicode_literals from wagtail.contrib.modeladmin.options import ModelAdmin, ModelAdminGroup, modeladmin_register from wagtail.tests.testapp.models import BusinessChild, EventPage, SingleEventPage -from .models import Author, Book +from .models import Author, Book, Token class AuthorModelAdmin(ModelAdmin): @@ -26,6 +26,11 @@ class BookModelAdmin(ModelAdmin): inspect_view_fields_exclude = ('title', ) +class TokenModelAdmin(ModelAdmin): + model = Token + list_display = ('key',) + + class EventPageAdmin(ModelAdmin): model = EventPage list_display = ('title', 'date_from', 'audience') @@ -53,5 +58,6 @@ class BusinessChildAdmin(ModelAdmin): modeladmin_register(AuthorModelAdmin) modeladmin_register(BookModelAdmin) +modeladmin_register(TokenModelAdmin) modeladmin_register(EventsAdminGroup) modeladmin_register(BusinessChildAdmin)