1
0
mirror of https://github.com/django/django.git synced 2025-07-04 17:59:13 +00:00

[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
This commit is contained in:
Jannis Leidel 2010-02-16 12:52:33 +00:00
parent df1ad561b1
commit 77192eb661
3 changed files with 28 additions and 2 deletions

View File

@ -54,7 +54,7 @@
<p class="errornote"> <p class="errornote">
{% blocktrans count cl.formset.errors|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %} {% blocktrans count cl.formset.errors|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}
</p> </p>
<ul class="errorlist">{% for error in cl.formset.non_field_errors %}<li>{{ error }}</li>{% endfor %}</ul> <ul class="errorlist">{% for error in cl.formset.non_form_errors %}<li>{{ error }}</li>{% endfor %}</ul>
{% endif %} {% endif %}
<div class="module{% if cl.has_filters %} filtered{% endif %}" id="changelist"> <div class="module{% if cl.has_filters %} filtered{% endif %}" id="changelist">
{% block search %}{% search_form cl %}{% endblock %} {% block search %}{% search_form cl %}{% endblock %}

View File

@ -5,6 +5,8 @@ from django.core.files.storage import FileSystemStorage
from django.db import models from django.db import models
from django.contrib import admin from django.contrib import admin
from django.core.mail import EmailMessage from django.core.mail import EmailMessage
from django import forms
from django.forms.models import BaseModelFormSet
class Section(models.Model): class Section(models.Model):
""" """
@ -168,6 +170,14 @@ class Person(models.Model):
class Meta: class Meta:
ordering = ["id"] 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): class PersonAdmin(admin.ModelAdmin):
list_display = ('name', 'gender', 'alive') list_display = ('name', 'gender', 'alive')
list_editable = ('gender', 'alive') list_editable = ('gender', 'alive')
@ -176,6 +186,10 @@ class PersonAdmin(admin.ModelAdmin):
ordering = ["id"] ordering = ["id"]
save_as = True 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): class Persona(models.Model):
""" """
A simple persona associated with accounts, to test inlining of related A simple persona associated with accounts, to test inlining of related

View File

@ -921,7 +921,6 @@ class AdminViewListEditable(TestCase):
"form-2-id": "3", "form-2-id": "3",
} }
self.client.post('/test_admin/admin/admin_views/person/', data) 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="John Mauchly").alive, False)
self.failUnlessEqual(Person.objects.get(name="Grace Hopper").gender, 2) 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) 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): def test_list_editable_ordering(self):
collector = Collector.objects.create(id=1, name="Frederick Clegg") collector = Collector.objects.create(id=1, name="Frederick Clegg")