diff options
| author | Carl Meyer <carl@oddbird.net> | 2011-01-20 01:00:47 +0000 |
|---|---|---|
| committer | Carl Meyer <carl@oddbird.net> | 2011-01-20 01:00:47 +0000 |
| commit | 53dac996efedf9138938ad4aa5647cb68006937c (patch) | |
| tree | ce32bed6a5a7bb1d0ff7aea5c7c530edefa890fd | |
| parent | 93a4d46184bba069fc6a9aa5517802b2488032ac (diff) | |
Poured a little more perfectionism into the delete-confirmation templates.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15250 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/contrib/admin/actions.py | 14 | ||||
| -rw-r--r-- | django/contrib/admin/options.py | 11 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/delete_confirmation.html | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/delete_selected_confirmation.html | 6 | ||||
| -rw-r--r-- | tests/regressiontests/admin_views/tests.py | 2 |
5 files changed, 26 insertions, 9 deletions
diff --git a/django/contrib/admin/actions.py b/django/contrib/admin/actions.py index 6e52e34d94..c68184a768 100644 --- a/django/contrib/admin/actions.py +++ b/django/contrib/admin/actions.py @@ -52,9 +52,19 @@ def delete_selected(modeladmin, request, queryset): # Return None to display the change list page again. return None + if len(queryset) == 1: + objects_name = force_unicode(opts.verbose_name) + else: + objects_name = force_unicode(opts.verbose_name_plural) + + if perms_needed or protected: + title = _("Cannot delete %(name)s") % {"name": objects_name} + else: + title = _("Are you sure?") + context = { - "title": _("Are you sure?"), - "object_name": force_unicode(opts.verbose_name), + "title": title, + "objects_name": objects_name, "deletable_objects": [deletable_objects], 'queryset': queryset, "perms_lacking": perms_needed, diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index f51070ca67..4ad21eb42b 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -1193,9 +1193,16 @@ class ModelAdmin(BaseModelAdmin): return HttpResponseRedirect("../../../../") return HttpResponseRedirect("../../") + object_name = force_unicode(opts.verbose_name) + + if perms_needed or protected: + title = _("Cannot delete %(name)s") % {"name": object_name} + else: + title = _("Are you sure?") + context = { - "title": _("Are you sure?"), - "object_name": force_unicode(opts.verbose_name), + "title": title, + "object_name": object_name, "object": obj, "deleted_objects": deleted_objects, "perms_lacking": perms_needed, diff --git a/django/contrib/admin/templates/admin/delete_confirmation.html b/django/contrib/admin/templates/admin/delete_confirmation.html index db4ef627b7..0e6d47e68d 100644 --- a/django/contrib/admin/templates/admin/delete_confirmation.html +++ b/django/contrib/admin/templates/admin/delete_confirmation.html @@ -22,7 +22,7 @@ </ul> {% endif %} {% if protected %} - <p>{% blocktrans with object as escaped_object %}Deleting the {{ object_name }} '{{ escaped_object }}' is not possible, because it would require deleting the following protected related objects:{% endblocktrans %}</p> + <p>{% blocktrans with object as escaped_object %}Deleting the {{ object_name }} '{{ escaped_object }}' would require deleting the following protected related objects:{% endblocktrans %}</p> <ul> {% for obj in protected %} <li>{{ obj }}</li> diff --git a/django/contrib/admin/templates/admin/delete_selected_confirmation.html b/django/contrib/admin/templates/admin/delete_selected_confirmation.html index aad8b13a8a..2bb4fb4742 100644 --- a/django/contrib/admin/templates/admin/delete_selected_confirmation.html +++ b/django/contrib/admin/templates/admin/delete_selected_confirmation.html @@ -13,7 +13,7 @@ {% block content %} {% if perms_lacking or protected %} {% if perms_lacking %} - <p>{% blocktrans %}Deleting the {{ object_name }} would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}</p> + <p>{% blocktrans %}Deleting the selected {{ objects_name }} would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}</p> <ul> {% for obj in perms_lacking %} <li>{{ obj }}</li> @@ -21,7 +21,7 @@ </ul> {% endif %} {% if protected %} - <p>{% blocktrans %}Deleting the {{ object_name }} is not possible, because it would require deleting the following protected related objects:{% endblocktrans %}</p> + <p>{% blocktrans %}Deleting the selected {{ objects_name }} would require deleting the following protected related objects:{% endblocktrans %}</p> <ul> {% for obj in protected %} <li>{{ obj }}</li> @@ -29,7 +29,7 @@ </ul> {% endif %} {% else %} - <p>{% blocktrans %}Are you sure you want to delete the selected {{ object_name }} objects? All of the following objects and their related items will be deleted:{% endblocktrans %}</p> + <p>{% blocktrans %}Are you sure you want to delete the selected {{ objects_name }}? All of the following objects and their related items will be deleted:{% endblocktrans %}</p> {% for deletable_object in deletable_objects %} <ul>{{ deletable_object|unordered_list }}</ul> {% endfor %} diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index ecc2316760..661954c7ec 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -1632,7 +1632,7 @@ class AdminActionsTest(TestCase): 'post': 'yes', } confirmation = self.client.post('/test_admin/admin/admin_views/subscriber/', action_data) - self.assertContains(confirmation, "Are you sure you want to delete the selected subscriber objects") + self.assertContains(confirmation, "Are you sure you want to delete the selected subscribers") self.assertTrue(confirmation.content.count(ACTION_CHECKBOX_NAME) == 2) response = self.client.post('/test_admin/admin/admin_views/subscriber/', delete_confirmation_data) self.assertEqual(Subscriber.objects.count(), 0) |
