summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Meyer <carl@oddbird.net>2011-01-20 01:00:47 +0000
committerCarl Meyer <carl@oddbird.net>2011-01-20 01:00:47 +0000
commit53dac996efedf9138938ad4aa5647cb68006937c (patch)
treece32bed6a5a7bb1d0ff7aea5c7c530edefa890fd
parent93a4d46184bba069fc6a9aa5517802b2488032ac (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.py14
-rw-r--r--django/contrib/admin/options.py11
-rw-r--r--django/contrib/admin/templates/admin/delete_confirmation.html2
-rw-r--r--django/contrib/admin/templates/admin/delete_selected_confirmation.html6
-rw-r--r--tests/regressiontests/admin_views/tests.py2
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)