From 0a9b5d7adee86def16972debf6441deb96135ce2 Mon Sep 17 00:00:00 2001 From: Ramiro Morales Date: Sat, 26 Feb 2011 01:44:41 +0000 Subject: Fixed #15424 -- Corrected lookup of callables listed in admin inlines' `readonly_fields` by passing the right ModelAdmin (sub)class instance when instantiating inline forms admin wrappers. Also, added early validation of its elements. Thanks kmike for the report and Karen for the patch fixing the issue. git-svn-id: http://code.djangoproject.com/svn/django/trunk@15650 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/admin_validation/models.py | 8 ++++++++ tests/regressiontests/admin_validation/tests.py | 16 +++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'tests/regressiontests/admin_validation') diff --git a/tests/regressiontests/admin_validation/models.py b/tests/regressiontests/admin_validation/models.py index 24387cc363..5e080a9232 100644 --- a/tests/regressiontests/admin_validation/models.py +++ b/tests/regressiontests/admin_validation/models.py @@ -45,3 +45,11 @@ class Book(models.Model): class AuthorsBooks(models.Model): author = models.ForeignKey(Author) book = models.ForeignKey(Book) + + +class State(models.Model): + name = models.CharField(max_length=15) + + +class City(models.Model): + state = models.ForeignKey(State) diff --git a/tests/regressiontests/admin_validation/tests.py b/tests/regressiontests/admin_validation/tests.py index 1872ca55e2..6fbdc8040e 100644 --- a/tests/regressiontests/admin_validation/tests.py +++ b/tests/regressiontests/admin_validation/tests.py @@ -4,7 +4,7 @@ from django.contrib.admin.validation import validate, validate_inline, \ ImproperlyConfigured from django.test import TestCase -from models import Song, Book, Album, TwoAlbumFKAndAnE +from models import Song, Book, Album, TwoAlbumFKAndAnE, State, City class SongForm(forms.ModelForm): pass @@ -162,6 +162,16 @@ class ValidationTestCase(TestCase): validate, SongAdmin, Song) + def test_nonexistant_field_on_inline(self): + class CityInline(admin.TabularInline): + model = City + readonly_fields=['i_dont_exist'] # Missing attribute + + self.assertRaisesMessage(ImproperlyConfigured, + "CityInline.readonly_fields[0], 'i_dont_exist' is not a callable or an attribute of 'CityInline' or found in the model 'City'.", + validate_inline, + CityInline, None, State) + def test_extra(self): class SongAdmin(admin.ModelAdmin): def awesome_song(self, instance): @@ -241,7 +251,3 @@ class ValidationTestCase(TestCase): fields = ['title', 'extra_data'] validate(FieldsOnFormOnlyAdmin, Song) - - - - -- cgit v1.3