mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	[1.8.x] Replaced hardcoded URLs in admin_* tests
Refs #15779. This will allow easier admin URL changes, when needed.
Thanks Simon Charette for the review.
Backport of 32e6a7d3a5 from master
			
			
This commit is contained in:
		| @@ -79,7 +79,7 @@ class UserAdmin(admin.ModelAdmin): | |||||||
|  |  | ||||||
|     def get_urls(self): |     def get_urls(self): | ||||||
|         return [ |         return [ | ||||||
|             url(r'^(\d+)/password/$', self.admin_site.admin_view(self.user_change_password)), |             url(r'^(\d+)/password/$', self.admin_site.admin_view(self.user_change_password), name='auth_user_password_change'), | ||||||
|         ] + super(UserAdmin, self).get_urls() |         ] + super(UserAdmin, self).get_urls() | ||||||
|  |  | ||||||
|     def lookup_allowed(self, lookup, value): |     def lookup_allowed(self, lookup, value): | ||||||
|   | |||||||
| @@ -365,7 +365,7 @@ class ChangeListTests(TestCase): | |||||||
|             username='super', email='super@localhost', password='secret') |             username='super', email='super@localhost', password='secret') | ||||||
|         self.client.login(username='super', password='secret') |         self.client.login(username='super', password='secret') | ||||||
|         event = Event.objects.create(date=datetime.date.today()) |         event = Event.objects.create(date=datetime.date.today()) | ||||||
|         response = self.client.get('/admin/admin_changelist/event/') |         response = self.client.get(reverse('admin:admin_changelist_event_changelist')) | ||||||
|         self.assertContains(response, formats.localize(event.date)) |         self.assertContains(response, formats.localize(event.date)) | ||||||
|         self.assertNotContains(response, six.text_type(event.date)) |         self.assertNotContains(response, six.text_type(event.date)) | ||||||
|  |  | ||||||
| @@ -678,7 +678,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|         """ |         """ | ||||||
|         self.admin_login(username='super', password='secret') |         self.admin_login(username='super', password='secret') | ||||||
|         self.selenium.get('%s%s' % (self.live_server_url, |         self.selenium.get('%s%s' % (self.live_server_url, | ||||||
|                                     '/admin/auth/user/')) |                                     reverse('admin:auth_user_changelist'))) | ||||||
|  |  | ||||||
|         form_id = '#changelist-form' |         form_id = '#changelist-form' | ||||||
|  |  | ||||||
|   | |||||||
| @@ -26,7 +26,9 @@ class AdminCustomUrlsTest(TestCase): | |||||||
|         """ |         """ | ||||||
|         Ensure GET on the add_view works. |         Ensure GET on the add_view works. | ||||||
|         """ |         """ | ||||||
|         response = self.client.get('/admin/admin_custom_urls/action/!add/') |         add_url = reverse('admin:admin_custom_urls_action_add') | ||||||
|  |         self.assertTrue(add_url.endswith('/!add/')) | ||||||
|  |         response = self.client.get(add_url) | ||||||
|         self.assertIsInstance(response, TemplateResponse) |         self.assertIsInstance(response, TemplateResponse) | ||||||
|         self.assertEqual(response.status_code, 200) |         self.assertEqual(response.status_code, 200) | ||||||
|  |  | ||||||
| @@ -35,7 +37,7 @@ class AdminCustomUrlsTest(TestCase): | |||||||
|         Ensure GET on the add_view plus specifying a field value in the query |         Ensure GET on the add_view plus specifying a field value in the query | ||||||
|         string works. |         string works. | ||||||
|         """ |         """ | ||||||
|         response = self.client.get('/admin/admin_custom_urls/action/!add/', {'name': 'My Action'}) |         response = self.client.get(reverse('admin:admin_custom_urls_action_add'), {'name': 'My Action'}) | ||||||
|         self.assertEqual(response.status_code, 200) |         self.assertEqual(response.status_code, 200) | ||||||
|         self.assertContains(response, 'value="My Action"') |         self.assertContains(response, 'value="My Action"') | ||||||
|  |  | ||||||
| @@ -48,7 +50,7 @@ class AdminCustomUrlsTest(TestCase): | |||||||
|             "name": 'Action added through a popup', |             "name": 'Action added through a popup', | ||||||
|             "description": "Description of added action", |             "description": "Description of added action", | ||||||
|         } |         } | ||||||
|         response = self.client.post('/admin/admin_custom_urls/action/!add/', post_data) |         response = self.client.post(reverse('admin:admin_custom_urls_action_add'), post_data) | ||||||
|         self.assertEqual(response.status_code, 200) |         self.assertEqual(response.status_code, 200) | ||||||
|         self.assertContains(response, 'dismissAddRelatedObjectPopup') |         self.assertContains(response, 'dismissAddRelatedObjectPopup') | ||||||
|         self.assertContains(response, 'Action added through a popup') |         self.assertContains(response, 'Action added through a popup') | ||||||
|   | |||||||
| @@ -2,21 +2,25 @@ from __future__ import unicode_literals | |||||||
|  |  | ||||||
| import warnings | import warnings | ||||||
|  |  | ||||||
| from django.contrib.admin import TabularInline, ModelAdmin | from django.contrib.admin import ModelAdmin, TabularInline | ||||||
| from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase |  | ||||||
| from django.contrib.admin.helpers import InlineAdminForm | from django.contrib.admin.helpers import InlineAdminForm | ||||||
| from django.contrib.auth.models import User, Permission | from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase | ||||||
|  | from django.contrib.auth.models import Permission, User | ||||||
| from django.contrib.contenttypes.models import ContentType | from django.contrib.contenttypes.models import ContentType | ||||||
| from django.test import TestCase, override_settings, RequestFactory | from django.core.urlresolvers import reverse | ||||||
|  | from django.test import RequestFactory, TestCase, override_settings | ||||||
| from django.utils.encoding import force_text | from django.utils.encoding import force_text | ||||||
|  |  | ||||||
| # local test models | from .admin import site as admin_site | ||||||
| from .admin import InnerInline, site as admin_site | from .admin import InnerInline | ||||||
| from .models import (Holder, Inner, Holder2, Inner2, Holder3, Inner3, Person, | from .models import ( | ||||||
|     OutfitItem, Fashionista, Teacher, Parent, Child, Author, Book, Profile, |     Author, BinaryTree, Book, Chapter, Child, ChildModel1, ChildModel2, | ||||||
|     ProfileCollection, ParentModelWithCustomPk, ChildModel1, ChildModel2, |     Fashionista, FootNote, Holder, Holder2, Holder3, Holder4, Inner, Inner2, | ||||||
|     Sighting, Novel, Chapter, FootNote, BinaryTree, SomeParentModel, |     Inner3, Inner4Stacked, Inner4Tabular, Novel, OutfitItem, Parent, | ||||||
|     SomeChildModel, Poll, Question, Inner4Stacked, Inner4Tabular, Holder4) |     ParentModelWithCustomPk, Person, Poll, Profile, | ||||||
|  |     ProfileCollection, Question, Sighting, SomeChildModel, | ||||||
|  |     SomeParentModel, Teacher, | ||||||
|  | ) | ||||||
|  |  | ||||||
| INLINE_CHANGELINK_HTML = 'class="inlinechangelink">Change</a>' | INLINE_CHANGELINK_HTML = 'class="inlinechangelink">Change</a>' | ||||||
|  |  | ||||||
| @@ -30,7 +34,6 @@ class TestInline(TestCase): | |||||||
|         holder = Holder(dummy=13) |         holder = Holder(dummy=13) | ||||||
|         holder.save() |         holder.save() | ||||||
|         Inner(dummy=42, holder=holder).save() |         Inner(dummy=42, holder=holder).save() | ||||||
|         self.change_url = '/admin/admin_inlines/holder/%i/' % holder.id |  | ||||||
|  |  | ||||||
|         result = self.client.login(username='super', password='secret') |         result = self.client.login(username='super', password='secret') | ||||||
|         self.assertEqual(result, True) |         self.assertEqual(result, True) | ||||||
| @@ -40,7 +43,10 @@ class TestInline(TestCase): | |||||||
|         """ |         """ | ||||||
|         can_delete should be passed to inlineformset factory. |         can_delete should be passed to inlineformset factory. | ||||||
|         """ |         """ | ||||||
|         response = self.client.get(self.change_url) |         holder = Holder.objects.get(dummy=13) | ||||||
|  |         response = self.client.get( | ||||||
|  |             reverse('admin:admin_inlines_holder_change', args=(holder.id,)) | ||||||
|  |         ) | ||||||
|         inner_formset = response.context['inline_admin_formsets'][0].formset |         inner_formset = response.context['inline_admin_formsets'][0].formset | ||||||
|         expected = InnerInline.can_delete |         expected = InnerInline.can_delete | ||||||
|         actual = inner_formset.can_delete |         actual = inner_formset.can_delete | ||||||
| @@ -50,13 +56,14 @@ class TestInline(TestCase): | |||||||
|         """Bug #13174.""" |         """Bug #13174.""" | ||||||
|         holder = Holder.objects.create(dummy=42) |         holder = Holder.objects.create(dummy=42) | ||||||
|         Inner.objects.create(holder=holder, dummy=42, readonly='') |         Inner.objects.create(holder=holder, dummy=42, readonly='') | ||||||
|         response = self.client.get('/admin/admin_inlines/holder/%i/' |         response = self.client.get( | ||||||
|                                    % holder.id) |             reverse('admin:admin_inlines_holder_change', args=(holder.id,)) | ||||||
|  |         ) | ||||||
|         self.assertContains(response, '<label>Inner readonly label:</label>') |         self.assertContains(response, '<label>Inner readonly label:</label>') | ||||||
|  |  | ||||||
|     def test_many_to_many_inlines(self): |     def test_many_to_many_inlines(self): | ||||||
|         "Autogenerated many-to-many inlines are displayed correctly (#13407)" |         "Autogenerated many-to-many inlines are displayed correctly (#13407)" | ||||||
|         response = self.client.get('/admin/admin_inlines/author/add/') |         response = self.client.get(reverse('admin:admin_inlines_author_add')) | ||||||
|         # The heading for the m2m inline block uses the right text |         # The heading for the m2m inline block uses the right text | ||||||
|         self.assertContains(response, '<h2>Author-book relationships</h2>') |         self.assertContains(response, '<h2>Author-book relationships</h2>') | ||||||
|         # The "add another" label is correct |         # The "add another" label is correct | ||||||
| @@ -77,7 +84,7 @@ class TestInline(TestCase): | |||||||
|             'max_weight': 0, |             'max_weight': 0, | ||||||
|             'shoppingweakness_set-0-item': item.id, |             'shoppingweakness_set-0-item': item.id, | ||||||
|         } |         } | ||||||
|         response = self.client.post('/admin/admin_inlines/fashionista/add/', data) |         response = self.client.post(reverse('admin:admin_inlines_fashionista_add'), data) | ||||||
|         self.assertEqual(response.status_code, 302) |         self.assertEqual(response.status_code, 302) | ||||||
|         self.assertEqual(len(Fashionista.objects.filter(person__firstname='Imelda')), 1) |         self.assertEqual(len(Fashionista.objects.filter(person__firstname='Imelda')), 1) | ||||||
|  |  | ||||||
| @@ -94,7 +101,7 @@ class TestInline(TestCase): | |||||||
|             'title_set-0-title1': 'a title', |             'title_set-0-title1': 'a title', | ||||||
|             'title_set-0-title2': 'a different title', |             'title_set-0-title2': 'a different title', | ||||||
|         } |         } | ||||||
|         response = self.client.post('/admin/admin_inlines/titlecollection/add/', data) |         response = self.client.post(reverse('admin:admin_inlines_titlecollection_add'), data) | ||||||
|         # Here colspan is "4": two fields (title1 and title2), one hidden field and the delete checkbox. |         # Here colspan is "4": two fields (title1 and title2), one hidden field and the delete checkbox. | ||||||
|         self.assertContains(response, '<tr><td colspan="4"><ul class="errorlist nonfield"><li>The two titles must be the same</li></ul></td></tr>') |         self.assertContains(response, '<tr><td colspan="4"><ul class="errorlist nonfield"><li>The two titles must be the same</li></ul></td></tr>') | ||||||
|  |  | ||||||
| @@ -102,14 +109,14 @@ class TestInline(TestCase): | |||||||
|         """Admin inline `readonly_field` shouldn't invoke parent ModelAdmin callable""" |         """Admin inline `readonly_field` shouldn't invoke parent ModelAdmin callable""" | ||||||
|         # Identically named callable isn't present in the parent ModelAdmin, |         # Identically named callable isn't present in the parent ModelAdmin, | ||||||
|         # rendering of the add view shouldn't explode |         # rendering of the add view shouldn't explode | ||||||
|         response = self.client.get('/admin/admin_inlines/novel/add/') |         response = self.client.get(reverse('admin:admin_inlines_novel_add')) | ||||||
|         self.assertEqual(response.status_code, 200) |         self.assertEqual(response.status_code, 200) | ||||||
|         # View should have the child inlines section |         # View should have the child inlines section | ||||||
|         self.assertContains(response, '<div class="inline-group" id="chapter_set-group">') |         self.assertContains(response, '<div class="inline-group" id="chapter_set-group">') | ||||||
|  |  | ||||||
|     def test_callable_lookup(self): |     def test_callable_lookup(self): | ||||||
|         """Admin inline should invoke local callable when its name is listed in readonly_fields""" |         """Admin inline should invoke local callable when its name is listed in readonly_fields""" | ||||||
|         response = self.client.get('/admin/admin_inlines/poll/add/') |         response = self.client.get(reverse('admin:admin_inlines_poll_add')) | ||||||
|         self.assertEqual(response.status_code, 200) |         self.assertEqual(response.status_code, 200) | ||||||
|         # Add parent object view should have the child inlines section |         # Add parent object view should have the child inlines section | ||||||
|         self.assertContains(response, '<div class="inline-group" id="question_set-group">') |         self.assertContains(response, '<div class="inline-group" id="question_set-group">') | ||||||
| @@ -123,11 +130,11 @@ class TestInline(TestCase): | |||||||
|         using both the stacked and tabular layouts. |         using both the stacked and tabular layouts. | ||||||
|         Ref #8190. |         Ref #8190. | ||||||
|         """ |         """ | ||||||
|         response = self.client.get('/admin/admin_inlines/holder4/add/') |         response = self.client.get(reverse('admin:admin_inlines_holder4_add')) | ||||||
|         self.assertContains(response, '<p class="help">Awesome stacked help text is awesome.</p>', 4) |         self.assertContains(response, '<p class="help">Awesome stacked help text is awesome.</p>', 4) | ||||||
|         self.assertContains(response, '<img src="/static/admin/img/icon-unknown.gif" class="help help-tooltip" width="10" height="10" alt="(Awesome tabular help text is awesome.)" title="Awesome tabular help text is awesome." />', 1) |         self.assertContains(response, '<img src="/static/admin/img/icon-unknown.gif" class="help help-tooltip" width="10" height="10" alt="(Awesome tabular help text is awesome.)" title="Awesome tabular help text is awesome." />', 1) | ||||||
|         # ReadOnly fields |         # ReadOnly fields | ||||||
|         response = self.client.get('/admin/admin_inlines/capofamiglia/add/') |         response = self.client.get(reverse('admin:admin_inlines_capofamiglia_add')) | ||||||
|         self.assertContains(response, '<img src="/static/admin/img/icon-unknown.gif" class="help help-tooltip" width="10" height="10" alt="(Help text for ReadOnlyInline)" title="Help text for ReadOnlyInline" />', 1) |         self.assertContains(response, '<img src="/static/admin/img/icon-unknown.gif" class="help help-tooltip" width="10" height="10" alt="(Help text for ReadOnlyInline)" title="Help text for ReadOnlyInline" />', 1) | ||||||
|  |  | ||||||
|     def test_inline_hidden_field_no_column(self): |     def test_inline_hidden_field_no_column(self): | ||||||
| @@ -135,7 +142,7 @@ class TestInline(TestCase): | |||||||
|         parent = SomeParentModel.objects.create(name='a') |         parent = SomeParentModel.objects.create(name='a') | ||||||
|         SomeChildModel.objects.create(name='b', position='0', parent=parent) |         SomeChildModel.objects.create(name='b', position='0', parent=parent) | ||||||
|         SomeChildModel.objects.create(name='c', position='1', parent=parent) |         SomeChildModel.objects.create(name='c', position='1', parent=parent) | ||||||
|         response = self.client.get('/admin/admin_inlines/someparentmodel/%s/' % parent.pk) |         response = self.client.get(reverse('admin:admin_inlines_someparentmodel_change', args=(parent.pk,))) | ||||||
|         self.assertNotContains(response, '<td class="field-position">') |         self.assertNotContains(response, '<td class="field-position">') | ||||||
|         self.assertContains(response, ( |         self.assertContains(response, ( | ||||||
|             '<input id="id_somechildmodel_set-1-position" ' |             '<input id="id_somechildmodel_set-1-position" ' | ||||||
| @@ -146,7 +153,7 @@ class TestInline(TestCase): | |||||||
|         Ensure that multiple inlines with related_name='+' have correct form |         Ensure that multiple inlines with related_name='+' have correct form | ||||||
|         prefixes. Bug #16838. |         prefixes. Bug #16838. | ||||||
|         """ |         """ | ||||||
|         response = self.client.get('/admin/admin_inlines/capofamiglia/add/') |         response = self.client.get(reverse('admin:admin_inlines_capofamiglia_add')) | ||||||
|  |  | ||||||
|         self.assertContains(response, |         self.assertContains(response, | ||||||
|                 '<input type="hidden" name="-1-0-id" id="id_-1-0-id" />', html=True) |                 '<input type="hidden" name="-1-0-id" id="id_-1-0-id" />', html=True) | ||||||
| @@ -172,7 +179,7 @@ class TestInline(TestCase): | |||||||
|         """ |         """ | ||||||
|         holder = Holder.objects.create(pk=123456789, dummy=42) |         holder = Holder.objects.create(pk=123456789, dummy=42) | ||||||
|         inner = Inner.objects.create(pk=987654321, holder=holder, dummy=42, readonly='') |         inner = Inner.objects.create(pk=987654321, holder=holder, dummy=42, readonly='') | ||||||
|         response = self.client.get('/admin/admin_inlines/holder/%i/' % holder.id) |         response = self.client.get(reverse('admin:admin_inlines_holder_change', args=(holder.id,))) | ||||||
|         inner_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(inner).pk, inner.pk) |         inner_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(inner).pk, inner.pk) | ||||||
|         self.assertContains(response, inner_shortcut) |         self.assertContains(response, inner_shortcut) | ||||||
|  |  | ||||||
| @@ -184,7 +191,7 @@ class TestInline(TestCase): | |||||||
|         parent = ParentModelWithCustomPk.objects.create(my_own_pk="foo", name="Foo") |         parent = ParentModelWithCustomPk.objects.create(my_own_pk="foo", name="Foo") | ||||||
|         child1 = ChildModel1.objects.create(my_own_pk="bar", name="Bar", parent=parent) |         child1 = ChildModel1.objects.create(my_own_pk="bar", name="Bar", parent=parent) | ||||||
|         child2 = ChildModel2.objects.create(my_own_pk="baz", name="Baz", parent=parent) |         child2 = ChildModel2.objects.create(my_own_pk="baz", name="Baz", parent=parent) | ||||||
|         response = self.client.get('/admin/admin_inlines/parentmodelwithcustompk/foo/') |         response = self.client.get(reverse('admin:admin_inlines_parentmodelwithcustompk_change', args=('foo',))) | ||||||
|         child1_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(child1).pk, child1.pk) |         child1_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(child1).pk, child1.pk) | ||||||
|         child2_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(child2).pk, child2.pk) |         child2_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(child2).pk, child2.pk) | ||||||
|         self.assertContains(response, child1_shortcut) |         self.assertContains(response, child1_shortcut) | ||||||
| @@ -203,7 +210,7 @@ class TestInline(TestCase): | |||||||
|             'sighting_set-0-place': 'Zone 51', |             'sighting_set-0-place': 'Zone 51', | ||||||
|             '_save': 'Save', |             '_save': 'Save', | ||||||
|         } |         } | ||||||
|         response = self.client.post('/admin/admin_inlines/extraterrestrial/add/', data) |         response = self.client.post(reverse('admin:admin_inlines_extraterrestrial_add'), data) | ||||||
|         self.assertEqual(response.status_code, 302) |         self.assertEqual(response.status_code, 302) | ||||||
|         self.assertEqual(Sighting.objects.filter(et__name='Martian').count(), 1) |         self.assertEqual(Sighting.objects.filter(et__name='Martian').count(), 1) | ||||||
|  |  | ||||||
| @@ -217,11 +224,11 @@ class TestInline(TestCase): | |||||||
|         # The total number of forms will remain the same in either case |         # The total number of forms will remain the same in either case | ||||||
|         total_forms_hidden = '<input id="id_binarytree_set-TOTAL_FORMS" name="binarytree_set-TOTAL_FORMS" type="hidden" value="2" />' |         total_forms_hidden = '<input id="id_binarytree_set-TOTAL_FORMS" name="binarytree_set-TOTAL_FORMS" type="hidden" value="2" />' | ||||||
|  |  | ||||||
|         response = self.client.get('/admin/admin_inlines/binarytree/add/') |         response = self.client.get(reverse('admin:admin_inlines_binarytree_add')) | ||||||
|         self.assertContains(response, max_forms_input % 3) |         self.assertContains(response, max_forms_input % 3) | ||||||
|         self.assertContains(response, total_forms_hidden) |         self.assertContains(response, total_forms_hidden) | ||||||
|  |  | ||||||
|         response = self.client.get("/admin/admin_inlines/binarytree/%d/" % bt_head.id) |         response = self.client.get(reverse('admin:admin_inlines_binarytree_change', args=(bt_head.id,))) | ||||||
|         self.assertContains(response, max_forms_input % 2) |         self.assertContains(response, max_forms_input % 2) | ||||||
|         self.assertContains(response, total_forms_hidden) |         self.assertContains(response, total_forms_hidden) | ||||||
|  |  | ||||||
| @@ -240,7 +247,7 @@ class TestInline(TestCase): | |||||||
|         min_forms = '<input id="id_binarytree_set-MIN_NUM_FORMS" name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="2" />' |         min_forms = '<input id="id_binarytree_set-MIN_NUM_FORMS" name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="2" />' | ||||||
|         total_forms = '<input id="id_binarytree_set-TOTAL_FORMS" name="binarytree_set-TOTAL_FORMS" type="hidden" value="5" />' |         total_forms = '<input id="id_binarytree_set-TOTAL_FORMS" name="binarytree_set-TOTAL_FORMS" type="hidden" value="5" />' | ||||||
|  |  | ||||||
|         request = self.factory.get('/admin/admin_inlines/binarytree/add/') |         request = self.factory.get(reverse('admin:admin_inlines_binarytree_add')) | ||||||
|         request.user = User(username='super', is_superuser=True) |         request.user = User(username='super', is_superuser=True) | ||||||
|         response = modeladmin.changeform_view(request) |         response = modeladmin.changeform_view(request) | ||||||
|         self.assertContains(response, min_forms) |         self.assertContains(response, min_forms) | ||||||
| @@ -268,20 +275,20 @@ class TestInline(TestCase): | |||||||
|         min_forms = '<input id="id_binarytree_set-MIN_NUM_FORMS" name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="%d" />' |         min_forms = '<input id="id_binarytree_set-MIN_NUM_FORMS" name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="%d" />' | ||||||
|         total_forms = '<input id="id_binarytree_set-TOTAL_FORMS" name="binarytree_set-TOTAL_FORMS" type="hidden" value="%d" />' |         total_forms = '<input id="id_binarytree_set-TOTAL_FORMS" name="binarytree_set-TOTAL_FORMS" type="hidden" value="%d" />' | ||||||
|  |  | ||||||
|         request = self.factory.get('/admin/admin_inlines/binarytree/add/') |         request = self.factory.get(reverse('admin:admin_inlines_binarytree_add')) | ||||||
|         request.user = User(username='super', is_superuser=True) |         request.user = User(username='super', is_superuser=True) | ||||||
|         response = modeladmin.changeform_view(request) |         response = modeladmin.changeform_view(request) | ||||||
|         self.assertContains(response, min_forms % 2) |         self.assertContains(response, min_forms % 2) | ||||||
|         self.assertContains(response, total_forms % 5) |         self.assertContains(response, total_forms % 5) | ||||||
|  |  | ||||||
|         request = self.factory.get("/admin/admin_inlines/binarytree/%d/" % bt_head.id) |         request = self.factory.get(reverse('admin:admin_inlines_binarytree_change', args=(bt_head.id,))) | ||||||
|         request.user = User(username='super', is_superuser=True) |         request.user = User(username='super', is_superuser=True) | ||||||
|         response = modeladmin.changeform_view(request, object_id=str(bt_head.id)) |         response = modeladmin.changeform_view(request, object_id=str(bt_head.id)) | ||||||
|         self.assertContains(response, min_forms % 5) |         self.assertContains(response, min_forms % 5) | ||||||
|         self.assertContains(response, total_forms % 8) |         self.assertContains(response, total_forms % 8) | ||||||
|  |  | ||||||
|     def test_inline_nonauto_noneditable_pk(self): |     def test_inline_nonauto_noneditable_pk(self): | ||||||
|         response = self.client.get('/admin/admin_inlines/author/add/') |         response = self.client.get(reverse('admin:admin_inlines_author_add')) | ||||||
|         self.assertContains(response, |         self.assertContains(response, | ||||||
|             '<input id="id_nonautopkbook_set-0-rand_pk" name="nonautopkbook_set-0-rand_pk" type="hidden" />', |             '<input id="id_nonautopkbook_set-0-rand_pk" name="nonautopkbook_set-0-rand_pk" type="hidden" />', | ||||||
|              html=True) |              html=True) | ||||||
| @@ -290,7 +297,7 @@ class TestInline(TestCase): | |||||||
|              html=True) |              html=True) | ||||||
|  |  | ||||||
|     def test_inline_editable_pk(self): |     def test_inline_editable_pk(self): | ||||||
|         response = self.client.get('/admin/admin_inlines/author/add/') |         response = self.client.get(reverse('admin:admin_inlines_author_add')) | ||||||
|         self.assertContains(response, |         self.assertContains(response, | ||||||
|             '<input class="vIntegerField" id="id_editablepkbook_set-0-manual_pk" name="editablepkbook_set-0-manual_pk" type="text" />', |             '<input class="vIntegerField" id="id_editablepkbook_set-0-manual_pk" name="editablepkbook_set-0-manual_pk" type="text" />', | ||||||
|              html=True, count=1) |              html=True, count=1) | ||||||
| @@ -301,7 +308,7 @@ class TestInline(TestCase): | |||||||
|     def test_stacked_inline_edit_form_contains_has_original_class(self): |     def test_stacked_inline_edit_form_contains_has_original_class(self): | ||||||
|         holder = Holder.objects.create(dummy=1) |         holder = Holder.objects.create(dummy=1) | ||||||
|         holder.inner_set.create(dummy=1) |         holder.inner_set.create(dummy=1) | ||||||
|         response = self.client.get('/admin/admin_inlines/holder/%s/' % holder.pk) |         response = self.client.get(reverse('admin:admin_inlines_holder_change', args=(holder.pk,))) | ||||||
|         self.assertContains( |         self.assertContains( | ||||||
|             response, |             response, | ||||||
|             '<div class="inline-related has_original" id="inner_set-0">', |             '<div class="inline-related has_original" id="inner_set-0">', | ||||||
| @@ -322,10 +329,10 @@ class TestInline(TestCase): | |||||||
|             ('inner4stacked', item1.pk), |             ('inner4stacked', item1.pk), | ||||||
|             ('inner4tabular', item2.pk), |             ('inner4tabular', item2.pk), | ||||||
|         ) |         ) | ||||||
|         response = self.client.get('/admin/admin_inlines/holder4/%s/' % holder.pk) |         response = self.client.get(reverse('admin:admin_inlines_holder4_change', args=(holder.pk,))) | ||||||
|         self.assertTrue(response.context['inline_admin_formset'].opts.has_registered_model) |         self.assertTrue(response.context['inline_admin_formset'].opts.has_registered_model) | ||||||
|         for model, pk in items: |         for model, pk in items: | ||||||
|             url = '/admin/admin_inlines/%s/%s/' % (model, pk) |             url = reverse('admin:admin_inlines_%s_change' % model, args=(pk,)) | ||||||
|             self.assertContains(response, '<a href="%s" %s' % (url, INLINE_CHANGELINK_HTML)) |             self.assertContains(response, '<a href="%s" %s' % (url, INLINE_CHANGELINK_HTML)) | ||||||
|  |  | ||||||
|     def test_inlines_show_change_link_unregistered(self): |     def test_inlines_show_change_link_unregistered(self): | ||||||
| @@ -333,7 +340,7 @@ class TestInline(TestCase): | |||||||
|         parent = ParentModelWithCustomPk.objects.create(my_own_pk="foo", name="Foo") |         parent = ParentModelWithCustomPk.objects.create(my_own_pk="foo", name="Foo") | ||||||
|         ChildModel1.objects.create(my_own_pk="bar", name="Bar", parent=parent) |         ChildModel1.objects.create(my_own_pk="bar", name="Bar", parent=parent) | ||||||
|         ChildModel2.objects.create(my_own_pk="baz", name="Baz", parent=parent) |         ChildModel2.objects.create(my_own_pk="baz", name="Baz", parent=parent) | ||||||
|         response = self.client.get('/admin/admin_inlines/parentmodelwithcustompk/foo/') |         response = self.client.get(reverse('admin:admin_inlines_parentmodelwithcustompk_change', args=('foo',))) | ||||||
|         self.assertFalse(response.context['inline_admin_formset'].opts.has_registered_model) |         self.assertFalse(response.context['inline_admin_formset'].opts.has_registered_model) | ||||||
|         self.assertNotContains(response, INLINE_CHANGELINK_HTML) |         self.assertNotContains(response, INLINE_CHANGELINK_HTML) | ||||||
|  |  | ||||||
| @@ -341,7 +348,7 @@ class TestInline(TestCase): | |||||||
|         "Inlines `show_change_link` disabled by default." |         "Inlines `show_change_link` disabled by default." | ||||||
|         poll = Poll.objects.create(name="New poll") |         poll = Poll.objects.create(name="New poll") | ||||||
|         Question.objects.create(poll=poll) |         Question.objects.create(poll=poll) | ||||||
|         response = self.client.get('/admin/admin_inlines/poll/%s/' % poll.pk) |         response = self.client.get(reverse('admin:admin_inlines_poll_change', args=(poll.pk,))) | ||||||
|         self.assertTrue(response.context['inline_admin_formset'].opts.has_registered_model) |         self.assertTrue(response.context['inline_admin_formset'].opts.has_registered_model) | ||||||
|         self.assertNotContains(response, INLINE_CHANGELINK_HTML) |         self.assertNotContains(response, INLINE_CHANGELINK_HTML) | ||||||
|  |  | ||||||
| @@ -360,7 +367,7 @@ class TestInlineMedia(TestCase): | |||||||
|         holder = Holder(dummy=13) |         holder = Holder(dummy=13) | ||||||
|         holder.save() |         holder.save() | ||||||
|         Inner(dummy=42, holder=holder).save() |         Inner(dummy=42, holder=holder).save() | ||||||
|         change_url = '/admin/admin_inlines/holder/%i/' % holder.id |         change_url = reverse('admin:admin_inlines_holder_change', args=(holder.id,)) | ||||||
|         response = self.client.get(change_url) |         response = self.client.get(change_url) | ||||||
|         self.assertContains(response, 'my_awesome_admin_scripts.js') |         self.assertContains(response, 'my_awesome_admin_scripts.js') | ||||||
|  |  | ||||||
| @@ -368,7 +375,7 @@ class TestInlineMedia(TestCase): | |||||||
|         holder = Holder3(dummy=13) |         holder = Holder3(dummy=13) | ||||||
|         holder.save() |         holder.save() | ||||||
|         Inner3(dummy=42, holder=holder).save() |         Inner3(dummy=42, holder=holder).save() | ||||||
|         change_url = '/admin/admin_inlines/holder3/%i/' % holder.id |         change_url = reverse('admin:admin_inlines_holder3_change', args=(holder.id,)) | ||||||
|         response = self.client.get(change_url) |         response = self.client.get(change_url) | ||||||
|         self.assertContains(response, 'my_awesome_inline_scripts.js') |         self.assertContains(response, 'my_awesome_inline_scripts.js') | ||||||
|  |  | ||||||
| @@ -376,7 +383,7 @@ class TestInlineMedia(TestCase): | |||||||
|         holder = Holder2(dummy=13) |         holder = Holder2(dummy=13) | ||||||
|         holder.save() |         holder.save() | ||||||
|         Inner2(dummy=42, holder=holder).save() |         Inner2(dummy=42, holder=holder).save() | ||||||
|         change_url = '/admin/admin_inlines/holder2/%i/' % holder.id |         change_url = reverse('admin:admin_inlines_holder2_change', args=(holder.id,)) | ||||||
|         response = self.client.get(change_url) |         response = self.client.get(change_url) | ||||||
|         self.assertContains(response, 'my_awesome_admin_scripts.js') |         self.assertContains(response, 'my_awesome_admin_scripts.js') | ||||||
|         self.assertContains(response, 'my_awesome_inline_scripts.js') |         self.assertContains(response, 'my_awesome_inline_scripts.js') | ||||||
| @@ -437,7 +444,7 @@ class TestInlineProtectedOnDelete(TestCase): | |||||||
|         chapter = Chapter.objects.create(novel=lotr, name='Many Meetings') |         chapter = Chapter.objects.create(novel=lotr, name='Many Meetings') | ||||||
|         foot_note = FootNote.objects.create(chapter=chapter, note='yadda yadda') |         foot_note = FootNote.objects.create(chapter=chapter, note='yadda yadda') | ||||||
|  |  | ||||||
|         change_url = '/admin/admin_inlines/novel/%i/' % lotr.id |         change_url = reverse('admin:admin_inlines_novel_change', args=(lotr.id,)) | ||||||
|         response = self.client.get(change_url) |         response = self.client.get(change_url) | ||||||
|         data = { |         data = { | ||||||
|             'name': lotr.name, |             'name': lotr.name, | ||||||
| @@ -491,14 +498,14 @@ class TestInlinePermissions(TestCase): | |||||||
|  |  | ||||||
|         author = Author.objects.create(pk=1, name='The Author') |         author = Author.objects.create(pk=1, name='The Author') | ||||||
|         book = author.books.create(name='The inline Book') |         book = author.books.create(name='The inline Book') | ||||||
|         self.author_change_url = '/admin/admin_inlines/author/%i/' % author.id |         self.author_change_url = reverse('admin:admin_inlines_author_change', args=(author.id,)) | ||||||
|         # Get the ID of the automatically created intermediate model for the Author-Book m2m |         # Get the ID of the automatically created intermediate model for the Author-Book m2m | ||||||
|         author_book_auto_m2m_intermediate = Author.books.through.objects.get(author=author, book=book) |         author_book_auto_m2m_intermediate = Author.books.through.objects.get(author=author, book=book) | ||||||
|         self.author_book_auto_m2m_intermediate_id = author_book_auto_m2m_intermediate.pk |         self.author_book_auto_m2m_intermediate_id = author_book_auto_m2m_intermediate.pk | ||||||
|  |  | ||||||
|         holder = Holder2.objects.create(dummy=13) |         holder = Holder2.objects.create(dummy=13) | ||||||
|         inner2 = Inner2.objects.create(dummy=42, holder=holder) |         inner2 = Inner2.objects.create(dummy=42, holder=holder) | ||||||
|         self.holder_change_url = '/admin/admin_inlines/holder2/%i/' % holder.id |         self.holder_change_url = reverse('admin:admin_inlines_holder2_change', args=(holder.id,)) | ||||||
|         self.inner2_id = inner2.id |         self.inner2_id = inner2.id | ||||||
|  |  | ||||||
|         self.assertEqual( |         self.assertEqual( | ||||||
| @@ -506,14 +513,14 @@ class TestInlinePermissions(TestCase): | |||||||
|             True) |             True) | ||||||
|  |  | ||||||
|     def test_inline_add_m2m_noperm(self): |     def test_inline_add_m2m_noperm(self): | ||||||
|         response = self.client.get('/admin/admin_inlines/author/add/') |         response = self.client.get(reverse('admin:admin_inlines_author_add')) | ||||||
|         # No change permission on books, so no inline |         # No change permission on books, so no inline | ||||||
|         self.assertNotContains(response, '<h2>Author-book relationships</h2>') |         self.assertNotContains(response, '<h2>Author-book relationships</h2>') | ||||||
|         self.assertNotContains(response, 'Add another Author-Book Relationship') |         self.assertNotContains(response, 'Add another Author-Book Relationship') | ||||||
|         self.assertNotContains(response, 'id="id_Author_books-TOTAL_FORMS"') |         self.assertNotContains(response, 'id="id_Author_books-TOTAL_FORMS"') | ||||||
|  |  | ||||||
|     def test_inline_add_fk_noperm(self): |     def test_inline_add_fk_noperm(self): | ||||||
|         response = self.client.get('/admin/admin_inlines/holder2/add/') |         response = self.client.get(reverse('admin:admin_inlines_holder2_add')) | ||||||
|         # No permissions on Inner2s, so no inline |         # No permissions on Inner2s, so no inline | ||||||
|         self.assertNotContains(response, '<h2>Inner2s</h2>') |         self.assertNotContains(response, '<h2>Inner2s</h2>') | ||||||
|         self.assertNotContains(response, 'Add another Inner2') |         self.assertNotContains(response, 'Add another Inner2') | ||||||
| @@ -536,7 +543,7 @@ class TestInlinePermissions(TestCase): | |||||||
|     def test_inline_add_m2m_add_perm(self): |     def test_inline_add_m2m_add_perm(self): | ||||||
|         permission = Permission.objects.get(codename='add_book', content_type=self.book_ct) |         permission = Permission.objects.get(codename='add_book', content_type=self.book_ct) | ||||||
|         self.user.user_permissions.add(permission) |         self.user.user_permissions.add(permission) | ||||||
|         response = self.client.get('/admin/admin_inlines/author/add/') |         response = self.client.get(reverse('admin:admin_inlines_author_add')) | ||||||
|         # No change permission on Books, so no inline |         # No change permission on Books, so no inline | ||||||
|         self.assertNotContains(response, '<h2>Author-book relationships</h2>') |         self.assertNotContains(response, '<h2>Author-book relationships</h2>') | ||||||
|         self.assertNotContains(response, 'Add another Author-Book Relationship') |         self.assertNotContains(response, 'Add another Author-Book Relationship') | ||||||
| @@ -545,7 +552,7 @@ class TestInlinePermissions(TestCase): | |||||||
|     def test_inline_add_fk_add_perm(self): |     def test_inline_add_fk_add_perm(self): | ||||||
|         permission = Permission.objects.get(codename='add_inner2', content_type=self.inner_ct) |         permission = Permission.objects.get(codename='add_inner2', content_type=self.inner_ct) | ||||||
|         self.user.user_permissions.add(permission) |         self.user.user_permissions.add(permission) | ||||||
|         response = self.client.get('/admin/admin_inlines/holder2/add/') |         response = self.client.get(reverse('admin:admin_inlines_holder2_add')) | ||||||
|         # Add permission on inner2s, so we get the inline |         # Add permission on inner2s, so we get the inline | ||||||
|         self.assertContains(response, '<h2>Inner2s</h2>') |         self.assertContains(response, '<h2>Inner2s</h2>') | ||||||
|         self.assertContains(response, 'Add another Inner2') |         self.assertContains(response, 'Add another Inner2') | ||||||
| @@ -665,7 +672,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|         """ |         """ | ||||||
|         self.admin_login(username='super', password='secret') |         self.admin_login(username='super', password='secret') | ||||||
|         self.selenium.get('%s%s' % (self.live_server_url, |         self.selenium.get('%s%s' % (self.live_server_url, | ||||||
|             '/admin/admin_inlines/holder4/add/')) |             reverse('admin:admin_inlines_holder4_add'))) | ||||||
|  |  | ||||||
|         inline_id = '#inner4stacked_set-group' |         inline_id = '#inner4stacked_set-group' | ||||||
|         rows_length = lambda: len(self.selenium.find_elements_by_css_selector( |         rows_length = lambda: len(self.selenium.find_elements_by_css_selector( | ||||||
| @@ -681,7 +688,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|     def test_delete_stackeds(self): |     def test_delete_stackeds(self): | ||||||
|         self.admin_login(username='super', password='secret') |         self.admin_login(username='super', password='secret') | ||||||
|         self.selenium.get('%s%s' % (self.live_server_url, |         self.selenium.get('%s%s' % (self.live_server_url, | ||||||
|             '/admin/admin_inlines/holder4/add/')) |             reverse('admin:admin_inlines_holder4_add'))) | ||||||
|  |  | ||||||
|         inline_id = '#inner4stacked_set-group' |         inline_id = '#inner4stacked_set-group' | ||||||
|         rows_length = lambda: len(self.selenium.find_elements_by_css_selector( |         rows_length = lambda: len(self.selenium.find_elements_by_css_selector( | ||||||
| @@ -706,7 +713,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|         """ |         """ | ||||||
|         self.admin_login(username='super', password='secret') |         self.admin_login(username='super', password='secret') | ||||||
|         self.selenium.get('%s%s' % (self.live_server_url, |         self.selenium.get('%s%s' % (self.live_server_url, | ||||||
|             '/admin/admin_inlines/profilecollection/add/')) |             reverse('admin:admin_inlines_profilecollection_add'))) | ||||||
|  |  | ||||||
|         # Check that there's only one inline to start with and that it has the |         # Check that there's only one inline to start with and that it has the | ||||||
|         # correct ID. |         # correct ID. | ||||||
| @@ -763,7 +770,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|     def test_delete_inlines(self): |     def test_delete_inlines(self): | ||||||
|         self.admin_login(username='super', password='secret') |         self.admin_login(username='super', password='secret') | ||||||
|         self.selenium.get('%s%s' % (self.live_server_url, |         self.selenium.get('%s%s' % (self.live_server_url, | ||||||
|             '/admin/admin_inlines/profilecollection/add/')) |             reverse('admin:admin_inlines_profilecollection_add'))) | ||||||
|  |  | ||||||
|         # Add a few inlines |         # Add a few inlines | ||||||
|         self.selenium.find_element_by_link_text('Add another Profile').click() |         self.selenium.find_element_by_link_text('Add another Profile').click() | ||||||
| @@ -801,7 +808,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|     def test_alternating_rows(self): |     def test_alternating_rows(self): | ||||||
|         self.admin_login(username='super', password='secret') |         self.admin_login(username='super', password='secret') | ||||||
|         self.selenium.get('%s%s' % (self.live_server_url, |         self.selenium.get('%s%s' % (self.live_server_url, | ||||||
|             '/admin/admin_inlines/profilecollection/add/')) |             reverse('admin:admin_inlines_profilecollection_add'))) | ||||||
|  |  | ||||||
|         # Add a few inlines |         # Add a few inlines | ||||||
|         self.selenium.find_element_by_link_text('Add another Profile').click() |         self.selenium.find_element_by_link_text('Add another Profile').click() | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ class Admin2(admin.AdminSite): | |||||||
|  |  | ||||||
|     def get_urls(self): |     def get_urls(self): | ||||||
|         return [ |         return [ | ||||||
|             url(r'^my_view/$', self.admin_view(self.my_view)), |             url(r'^my_view/$', self.admin_view(self.my_view), name='my_view'), | ||||||
|         ] + super(Admin2, self).get_urls() |         ] + super(Admin2, self).get_urls() | ||||||
|  |  | ||||||
|     def my_view(self, request): |     def my_view(self, request): | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -5,10 +5,10 @@ from . import views, customadmin, custom_has_permission_admin, admin | |||||||
|  |  | ||||||
| urlpatterns = [ | urlpatterns = [ | ||||||
|     url(r'^test_admin/admin/doc/', include('django.contrib.admindocs.urls')), |     url(r'^test_admin/admin/doc/', include('django.contrib.admindocs.urls')), | ||||||
|     url(r'^test_admin/admin/secure-view/$', views.secure_view), |     url(r'^test_admin/admin/secure-view/$', views.secure_view, name='secure_view'), | ||||||
|     url(r'^test_admin/admin/', include(admin.site.urls)), |     url(r'^test_admin/admin/', include(admin.site.urls)), | ||||||
|     url(r'^test_admin/admin2/', include(customadmin.site.urls)), |     url(r'^test_admin/admin2/', include(customadmin.site.urls)), | ||||||
|     url(r'^test_admin/admin3/', include(admin.site.urls), dict(form_url='pony')), |     url(r'^test_admin/admin3/', include(admin.site.get_urls(), 'admin3', 'admin'), dict(form_url='pony')), | ||||||
|     url(r'^test_admin/admin4/', include(customadmin.simple_site.urls)), |     url(r'^test_admin/admin4/', include(customadmin.simple_site.urls)), | ||||||
|     url(r'^test_admin/admin5/', include(admin.site2.urls)), |     url(r'^test_admin/admin5/', include(admin.site2.urls)), | ||||||
|     url(r'^test_admin/admin7/', include(admin.site7.urls)), |     url(r'^test_admin/admin7/', include(admin.site7.urls)), | ||||||
|   | |||||||
| @@ -19,6 +19,7 @@ from django.contrib.admin import widgets | |||||||
| from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase | from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase | ||||||
| from django.core.files.storage import default_storage | from django.core.files.storage import default_storage | ||||||
| from django.core.files.uploadedfile import SimpleUploadedFile | from django.core.files.uploadedfile import SimpleUploadedFile | ||||||
|  | from django.core.urlresolvers import reverse | ||||||
| from django.db.models import CharField, DateField | from django.db.models import CharField, DateField | ||||||
| from django.test import TestCase as DjangoTestCase | from django.test import TestCase as DjangoTestCase | ||||||
| from django.test import override_settings | from django.test import override_settings | ||||||
| @@ -177,7 +178,7 @@ class AdminFormfieldForDBFieldWithRequestTests(DjangoTestCase): | |||||||
|         Ensure the user can only see their own cars in the foreign key dropdown. |         Ensure the user can only see their own cars in the foreign key dropdown. | ||||||
|         """ |         """ | ||||||
|         self.client.login(username="super", password="secret") |         self.client.login(username="super", password="secret") | ||||||
|         response = self.client.get("/admin_widgets/cartire/add/") |         response = self.client.get(reverse('admin:admin_widgets_cartire_add')) | ||||||
|         self.assertNotContains(response, "BMW M3") |         self.assertNotContains(response, "BMW M3") | ||||||
|         self.assertContains(response, "Volkswagon Passat") |         self.assertContains(response, "Volkswagon Passat") | ||||||
|  |  | ||||||
| @@ -191,7 +192,7 @@ class AdminForeignKeyWidgetChangeList(DjangoTestCase): | |||||||
|         self.client.login(username="super", password="secret") |         self.client.login(username="super", password="secret") | ||||||
|  |  | ||||||
|     def test_changelist_ForeignKey(self): |     def test_changelist_ForeignKey(self): | ||||||
|         response = self.client.get('/admin_widgets/car/') |         response = self.client.get(reverse('admin:admin_widgets_car_changelist')) | ||||||
|         self.assertContains(response, '/auth/user/add/') |         self.assertContains(response, '/auth/user/add/') | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -212,7 +213,7 @@ class AdminForeignKeyRawIdWidget(DjangoTestCase): | |||||||
|         } |         } | ||||||
|         # Try posting with a non-existent pk in a raw id field: this |         # Try posting with a non-existent pk in a raw id field: this | ||||||
|         # should result in an error message, not a server exception. |         # should result in an error message, not a server exception. | ||||||
|         response = self.client.post('/admin_widgets/event/add/', post_data) |         response = self.client.post(reverse('admin:admin_widgets_event_add'), post_data) | ||||||
|         self.assertContains(response, |         self.assertContains(response, | ||||||
|             'Select a valid choice. That choice is not one of the available choices.') |             'Select a valid choice. That choice is not one of the available choices.') | ||||||
|  |  | ||||||
| @@ -220,7 +221,7 @@ class AdminForeignKeyRawIdWidget(DjangoTestCase): | |||||||
|  |  | ||||||
|         for test_str in ('Iñtërnâtiônàlizætiøn', "1234'", -1234): |         for test_str in ('Iñtërnâtiônàlizætiøn', "1234'", -1234): | ||||||
|             # This should result in an error message, not a server exception. |             # This should result in an error message, not a server exception. | ||||||
|             response = self.client.post('/admin_widgets/event/add/', |             response = self.client.post(reverse('admin:admin_widgets_event_add'), | ||||||
|                 {"main_band": test_str}) |                 {"main_band": test_str}) | ||||||
|  |  | ||||||
|             self.assertContains(response, |             self.assertContains(response, | ||||||
| @@ -386,7 +387,7 @@ class AdminFileWidgetTests(DjangoTestCase): | |||||||
|         File widgets should render as a link when they're marked "read only." |         File widgets should render as a link when they're marked "read only." | ||||||
|         """ |         """ | ||||||
|         self.client.login(username="super", password="secret") |         self.client.login(username="super", password="secret") | ||||||
|         response = self.client.get('/admin_widgets/album/%s/' % self.album.id) |         response = self.client.get(reverse('admin:admin_widgets_album_change', args=(self.album.id,))) | ||||||
|         self.assertContains( |         self.assertContains( | ||||||
|             response, |             response, | ||||||
|             '<p><a href="%(STORAGE_URL)salbums/hybrid_theory.jpg">' |             '<p><a href="%(STORAGE_URL)salbums/hybrid_theory.jpg">' | ||||||
| @@ -585,7 +586,7 @@ class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|         self.admin_login(username='super', password='secret', login_url='/') |         self.admin_login(username='super', password='secret', login_url='/') | ||||||
|         # Open a page that has a date and time picker widgets |         # Open a page that has a date and time picker widgets | ||||||
|         self.selenium.get('%s%s' % (self.live_server_url, |         self.selenium.get('%s%s' % (self.live_server_url, | ||||||
|             '/admin_widgets/member/add/')) |             reverse('admin:admin_widgets_member_add'))) | ||||||
|  |  | ||||||
|         # First, with the date picker widget --------------------------------- |         # First, with the date picker widget --------------------------------- | ||||||
|         # Check that the date picker is hidden |         # Check that the date picker is hidden | ||||||
| @@ -625,7 +626,7 @@ class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|         self.admin_login(username='super', password='secret', login_url='/') |         self.admin_login(username='super', password='secret', login_url='/') | ||||||
|         # Open a page that has a date and time picker widgets |         # Open a page that has a date and time picker widgets | ||||||
|         self.selenium.get('%s%s' % (self.live_server_url, |         self.selenium.get('%s%s' % (self.live_server_url, | ||||||
|             '/admin_widgets/member/add/')) |             reverse('admin:admin_widgets_member_add'))) | ||||||
|  |  | ||||||
|         # fill in the birth date. |         # fill in the birth date. | ||||||
|         self.selenium.find_element_by_id('id_birthdate_0').send_keys('2013-06-01') |         self.selenium.find_element_by_id('id_birthdate_0').send_keys('2013-06-01') | ||||||
| @@ -649,7 +650,7 @@ class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|         self.admin_login(username='super', password='secret', login_url='/') |         self.admin_login(username='super', password='secret', login_url='/') | ||||||
|         # Open a page that has a date and time picker widgets |         # Open a page that has a date and time picker widgets | ||||||
|         self.selenium.get('%s%s' % (self.live_server_url, |         self.selenium.get('%s%s' % (self.live_server_url, | ||||||
|             '/admin_widgets/member/add/')) |             reverse('admin:admin_widgets_member_add'))) | ||||||
|  |  | ||||||
|         # fill in the birth date. |         # fill in the birth date. | ||||||
|         self.selenium.find_element_by_id('id_birthdate_0').send_keys('2013-06-01') |         self.selenium.find_element_by_id('id_birthdate_0').send_keys('2013-06-01') | ||||||
| @@ -675,7 +676,7 @@ class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|         self.admin_login(username='super', password='secret', login_url='/') |         self.admin_login(username='super', password='secret', login_url='/') | ||||||
|         # Open a page that has a date and time picker widgets |         # Open a page that has a date and time picker widgets | ||||||
|         self.selenium.get('%s%s' % (self.live_server_url, |         self.selenium.get('%s%s' % (self.live_server_url, | ||||||
|             '/admin_widgets/member/add/')) |             reverse('admin:admin_widgets_member_add'))) | ||||||
|  |  | ||||||
|         # Click the calendar icon |         # Click the calendar icon | ||||||
|         self.selenium.find_element_by_id('calendarlink0').click() |         self.selenium.find_element_by_id('calendarlink0').click() | ||||||
| @@ -721,7 +722,7 @@ class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|  |  | ||||||
|                 # Open a page that has a date picker widget |                 # Open a page that has a date picker widget | ||||||
|                 self.selenium.get('{}{}'.format(self.live_server_url, |                 self.selenium.get('{}{}'.format(self.live_server_url, | ||||||
|                     '/admin_widgets/member/{}/'.format(member.pk))) |                     reverse('admin:admin_widgets_member_change', args=(member.pk,)))) | ||||||
|  |  | ||||||
|                 # Click on the calendar icon |                 # Click on the calendar icon | ||||||
|                 self.selenium.find_element_by_id('calendarlink0').click() |                 self.selenium.find_element_by_id('calendarlink0').click() | ||||||
| @@ -775,7 +776,7 @@ class DateTimePickerShortcutsSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase | |||||||
|         now = datetime.now() |         now = datetime.now() | ||||||
|  |  | ||||||
|         self.selenium.get('%s%s' % (self.live_server_url, |         self.selenium.get('%s%s' % (self.live_server_url, | ||||||
|             '/admin_widgets/member/add/')) |             reverse('admin:admin_widgets_member_add'))) | ||||||
|  |  | ||||||
|         self.selenium.find_element_by_id('id_name').send_keys('test') |         self.selenium.find_element_by_id('id_name').send_keys('test') | ||||||
|  |  | ||||||
| @@ -952,8 +953,8 @@ class HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCas | |||||||
|         self.school.save() |         self.school.save() | ||||||
|  |  | ||||||
|         self.admin_login(username='super', password='secret', login_url='/') |         self.admin_login(username='super', password='secret', login_url='/') | ||||||
|         self.selenium.get( |         self.selenium.get('%s%s' % ( | ||||||
|             '%s%s' % (self.live_server_url, '/admin_widgets/school/%s/' % self.school.id)) |             self.live_server_url, reverse('admin:admin_widgets_school_change', args=(self.school.id,)))) | ||||||
|  |  | ||||||
|         self.wait_page_loaded() |         self.wait_page_loaded() | ||||||
|         self.execute_basic_operations('vertical', 'students') |         self.execute_basic_operations('vertical', 'students') | ||||||
| @@ -981,7 +982,7 @@ class HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCas | |||||||
|  |  | ||||||
|         self.admin_login(username='super', password='secret', login_url='/') |         self.admin_login(username='super', password='secret', login_url='/') | ||||||
|         self.selenium.get( |         self.selenium.get( | ||||||
|             '%s%s' % (self.live_server_url, '/admin_widgets/school/%s/' % self.school.id)) |             '%s%s' % (self.live_server_url, reverse('admin:admin_widgets_school_change', args=(self.school.id,)))) | ||||||
|  |  | ||||||
|         for field_name in ['students', 'alumni']: |         for field_name in ['students', 'alumni']: | ||||||
|             from_box = '#id_%s_from' % field_name |             from_box = '#id_%s_from' % field_name | ||||||
| @@ -1082,7 +1083,7 @@ class AdminRawIdWidgetSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|     def test_ForeignKey(self): |     def test_ForeignKey(self): | ||||||
|         self.admin_login(username='super', password='secret', login_url='/') |         self.admin_login(username='super', password='secret', login_url='/') | ||||||
|         self.selenium.get( |         self.selenium.get( | ||||||
|             '%s%s' % (self.live_server_url, '/admin_widgets/event/add/')) |             '%s%s' % (self.live_server_url, reverse('admin:admin_widgets_event_add'))) | ||||||
|         main_window = self.selenium.current_window_handle |         main_window = self.selenium.current_window_handle | ||||||
|  |  | ||||||
|         # No value has been selected yet |         # No value has been selected yet | ||||||
| @@ -1117,7 +1118,7 @@ class AdminRawIdWidgetSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|     def test_many_to_many(self): |     def test_many_to_many(self): | ||||||
|         self.admin_login(username='super', password='secret', login_url='/') |         self.admin_login(username='super', password='secret', login_url='/') | ||||||
|         self.selenium.get( |         self.selenium.get( | ||||||
|             '%s%s' % (self.live_server_url, '/admin_widgets/event/add/')) |             '%s%s' % (self.live_server_url, reverse('admin:admin_widgets_event_add'))) | ||||||
|         main_window = self.selenium.current_window_handle |         main_window = self.selenium.current_window_handle | ||||||
|  |  | ||||||
|         # No value has been selected yet |         # No value has been selected yet | ||||||
| @@ -1169,7 +1170,7 @@ class RelatedFieldWidgetSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): | |||||||
|         self.admin_login(username='super', password='secret', login_url='/') |         self.admin_login(username='super', password='secret', login_url='/') | ||||||
|         self.selenium.get('%s%s' % ( |         self.selenium.get('%s%s' % ( | ||||||
|             self.live_server_url, |             self.live_server_url, | ||||||
|             '/admin_widgets/profile/add/')) |             reverse('admin:admin_widgets_profile_add'))) | ||||||
|  |  | ||||||
|         main_window = self.selenium.current_window_handle |         main_window = self.selenium.current_window_handle | ||||||
|         # Click the Add User button to add new |         # Click the Add User button to add new | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user