Fixed #14012 (again) -- Admin app: Don't show the full user edition view after adding a user in a FK popup. Thanks dburke for reporting this regression introduced in r14628.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@15637 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Ramiro Morales 2011-02-24 01:00:57 +00:00
parent 12bd7bcb35
commit 4b13e76deb
2 changed files with 18 additions and 3 deletions

View File

@ -142,9 +142,12 @@ class UserAdmin(admin.ModelAdmin):
its superclass implementation but is customized because the User model its superclass implementation but is customized because the User model
has a slightly different workflow. has a slightly different workflow.
""" """
if '_addanother' not in request.POST: # We should allow further modification of the user just added i.e. the
# The 'Save' button should act like the 'Save and continue # 'Save' button should behave like the 'Save and continue editing'
# editing' button # button except in two scenarios:
# * The user has pressed the 'Save and add another' button
# * We are adding a user in a popup
if '_addanother' not in request.POST and '_popup' not in request.POST:
request.POST['_continue'] = 1 request.POST['_continue'] = 1
return super(UserAdmin, self).response_add(request, obj, post_url_continue) return super(UserAdmin, self).response_add(request, obj, post_url_continue)

View File

@ -2637,13 +2637,25 @@ class UserAdminTest(TestCase):
[u"The two password fields didn't match."]) [u"The two password fields didn't match."])
def test_user_fk_popup(self): def test_user_fk_popup(self):
"""Quick user addition in a FK popup shouldn't invoke view for further user customization"""
response = self.client.get('/test_admin/admin/admin_views/album/add/') response = self.client.get('/test_admin/admin/admin_views/album/add/')
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertContains(response, '/test_admin/admin/auth/user/add') self.assertContains(response, '/test_admin/admin/auth/user/add')
self.assertContains(response, 'class="add-another" id="add_id_owner" onclick="return showAddAnotherPopup(this);"') self.assertContains(response, 'class="add-another" id="add_id_owner" onclick="return showAddAnotherPopup(this);"')
response = self.client.get('/test_admin/admin/auth/user/add/?_popup=1') response = self.client.get('/test_admin/admin/auth/user/add/?_popup=1')
self.assertEqual(response.status_code, 200)
self.assertNotContains(response, 'name="_continue"') self.assertNotContains(response, 'name="_continue"')
self.assertNotContains(response, 'name="_addanother"') self.assertNotContains(response, 'name="_addanother"')
data = {
'username': 'newuser',
'password1': 'newpassword',
'password2': 'newpassword',
'_popup': '1',
'_save': '1',
}
response = self.client.post('/test_admin/admin/auth/user/add/?_popup=1', data, follow=True)
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'dismissAddAnotherPopup')
def test_save_add_another_button(self): def test_save_add_another_button(self):
user_count = User.objects.count() user_count = User.objects.count()