diff options
| author | Karen Tracey <kmtracey@gmail.com> | 2010-03-02 02:28:49 +0000 |
|---|---|---|
| committer | Karen Tracey <kmtracey@gmail.com> | 2010-03-02 02:28:49 +0000 |
| commit | 2890c2295bbd9144e30a74e7be9d11b4903a5101 (patch) | |
| tree | 7a908a2b93706de06acd9e55c97ab92381378d70 /tests/regressiontests/admin_widgets | |
| parent | 17c466a57bb6dc94a404af3fec24ef1c9f4a4e31 (diff) | |
Fixed #11465: Ensure nonexistent pks enterd in an admin raw id field do not
cause a server error. Thanks for report and initial patch sacre@wp.pl.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12648 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/admin_widgets')
| -rw-r--r-- | tests/regressiontests/admin_widgets/tests.py | 24 | ||||
| -rw-r--r-- | tests/regressiontests/admin_widgets/widgetadmin.py | 4 |
2 files changed, 28 insertions, 0 deletions
diff --git a/tests/regressiontests/admin_widgets/tests.py b/tests/regressiontests/admin_widgets/tests.py index 4113e82c1f..fd0c25ca1a 100644 --- a/tests/regressiontests/admin_widgets/tests.py +++ b/tests/regressiontests/admin_widgets/tests.py @@ -127,3 +127,27 @@ class AdminForeignKeyWidgetChangeList(DjangoTestCase): def test_changelist_foreignkey(self): response = self.client.get('%s/admin_widgets/car/' % self.admin_root) self.failUnless('%s/auth/user/add/' % self.admin_root in response.content) + +class AdminForeignKeyRawIdWidget(DjangoTestCase): + fixtures = ["admin-widgets-users.xml"] + admin_root = '/widget_admin' + + def setUp(self): + self.client.login(username="super", password="secret") + + def tearDown(self): + self.client.logout() + + def test_nonexistent_target_id(self): + band = models.Band.objects.create(name='Bogey Blues') + pk = band.pk + band.delete() + post_data = { + "band": u'%s' % pk, + } + # Try posting with a non-existent pk in a raw id field: this + # should result in an error message, not a server exception. + response = self.client.post('%s/admin_widgets/event/add/' % self.admin_root, + post_data) + self.assertContains(response, + 'Select a valid choice. That choice is not one of the available choices.') diff --git a/tests/regressiontests/admin_widgets/widgetadmin.py b/tests/regressiontests/admin_widgets/widgetadmin.py index 9257c306c9..6f15d9208b 100644 --- a/tests/regressiontests/admin_widgets/widgetadmin.py +++ b/tests/regressiontests/admin_widgets/widgetadmin.py @@ -19,8 +19,12 @@ class CarTireAdmin(admin.ModelAdmin): return db_field.formfield(**kwargs) return super(CarTireAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) +class EventAdmin(admin.ModelAdmin): + raw_id_fields = ['band'] + site = WidgetAdmin(name='widget-admin') site.register(models.User) site.register(models.Car, CarAdmin) site.register(models.CarTire, CarTireAdmin) +site.register(models.Event, EventAdmin) |
