From 77192eb661ffc1768d75cb3ed4f253240da8e6c0 Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Tue, 16 Feb 2010 12:52:33 +0000 Subject: [PATCH] [1.1.X] Fixed #12716 - Typo in the admin change list template. Thanks, kbrownlees. Backport of r12398 and r12448. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@12453 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- .../contrib/admin/templates/admin/change_list.html | 2 +- tests/regressiontests/admin_views/models.py | 14 ++++++++++++++ tests/regressiontests/admin_views/tests.py | 14 +++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/django/contrib/admin/templates/admin/change_list.html b/django/contrib/admin/templates/admin/change_list.html index 7e4da03a2f..161307b513 100644 --- a/django/contrib/admin/templates/admin/change_list.html +++ b/django/contrib/admin/templates/admin/change_list.html @@ -54,7 +54,7 @@

{% blocktrans count cl.formset.errors|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}

- + {% endif %}
{% block search %}{% search_form cl %}{% endblock %} diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py index 50bc05eef0..5a648c6331 100644 --- a/tests/regressiontests/admin_views/models.py +++ b/tests/regressiontests/admin_views/models.py @@ -5,6 +5,8 @@ from django.core.files.storage import FileSystemStorage from django.db import models from django.contrib import admin from django.core.mail import EmailMessage +from django import forms +from django.forms.models import BaseModelFormSet class Section(models.Model): """ @@ -168,6 +170,14 @@ class Person(models.Model): class Meta: ordering = ["id"] +class BasePersonModelFormSet(BaseModelFormSet): + def clean(self): + for person_dict in self.cleaned_data: + person = person_dict.get('id') + alive = person_dict.get('alive') + if person and alive and person.name == "Grace Hopper": + raise forms.ValidationError, "Grace is not a Zombie" + class PersonAdmin(admin.ModelAdmin): list_display = ('name', 'gender', 'alive') list_editable = ('gender', 'alive') @@ -176,6 +186,10 @@ class PersonAdmin(admin.ModelAdmin): ordering = ["id"] save_as = True + def get_changelist_formset(self, request, **kwargs): + return super(PersonAdmin, self).get_changelist_formset(request, + formset=BasePersonModelFormSet, **kwargs) + class Persona(models.Model): """ A simple persona associated with accounts, to test inlining of related diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index 9535381049..8514c13c11 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -921,7 +921,6 @@ class AdminViewListEditable(TestCase): "form-2-id": "3", } self.client.post('/test_admin/admin/admin_views/person/', data) - self.failUnlessEqual(Person.objects.get(name="John Mauchly").alive, False) self.failUnlessEqual(Person.objects.get(name="Grace Hopper").gender, 2) @@ -954,6 +953,19 @@ class AdminViewListEditable(TestCase): self.failUnlessEqual(Person.objects.get(name="John Mauchly").alive, False) + def test_non_form_errors(self): + # test if non-form errors are handled; ticket #12716 + data = { + "form-TOTAL_FORMS": "1", + "form-INITIAL_FORMS": "1", + + "form-0-id": "2", + "form-0-alive": "1", + "form-0-gender": "2", + } + response = self.client.post('/test_admin/admin/admin_views/person/', data) + self.assertContains(response, "Grace is not a Zombie") + def test_list_editable_ordering(self): collector = Collector.objects.create(id=1, name="Frederick Clegg")