mirror of https://github.com/django/django.git
Replaced hardcoded URLs in admin_* tests
Refs #15779. This will allow easier admin URL changes, when needed. Thanks Simon Charette for the review.
This commit is contained in:
parent
9033003d97
commit
32e6a7d3a5
|
@ -79,7 +79,7 @@ class UserAdmin(admin.ModelAdmin):
|
|||
|
||||
def get_urls(self):
|
||||
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()
|
||||
|
||||
def lookup_allowed(self, lookup, value):
|
||||
|
|
|
@ -368,7 +368,7 @@ class ChangeListTests(TestCase):
|
|||
username='super', email='super@localhost', password='secret')
|
||||
self.client.login(username='super', password='secret')
|
||||
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.assertNotContains(response, six.text_type(event.date))
|
||||
|
||||
|
@ -681,7 +681,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
"""
|
||||
self.admin_login(username='super', password='secret')
|
||||
self.selenium.get('%s%s' % (self.live_server_url,
|
||||
'/admin/auth/user/'))
|
||||
reverse('admin:auth_user_changelist')))
|
||||
|
||||
form_id = '#changelist-form'
|
||||
|
||||
|
|
|
@ -26,7 +26,9 @@ class AdminCustomUrlsTest(TestCase):
|
|||
"""
|
||||
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.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
|
||||
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.assertContains(response, 'value="My Action"')
|
||||
|
||||
|
@ -48,7 +50,7 @@ class AdminCustomUrlsTest(TestCase):
|
|||
"name": 'Action added through a popup',
|
||||
"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.assertContains(response, 'dismissAddRelatedObjectPopup')
|
||||
self.assertContains(response, 'Action added through a popup')
|
||||
|
|
|
@ -7,6 +7,7 @@ from django.contrib.admin.helpers import InlineAdminForm
|
|||
from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase
|
||||
from django.contrib.auth.models import Permission, User
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.test import RequestFactory, TestCase, override_settings
|
||||
from django.utils.encoding import force_text
|
||||
|
||||
|
@ -31,7 +32,6 @@ class TestInline(TestCase):
|
|||
holder = Holder(dummy=13)
|
||||
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')
|
||||
self.assertEqual(result, True)
|
||||
|
@ -41,7 +41,10 @@ class TestInline(TestCase):
|
|||
"""
|
||||
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
|
||||
expected = InnerInline.can_delete
|
||||
actual = inner_formset.can_delete
|
||||
|
@ -51,13 +54,14 @@ class TestInline(TestCase):
|
|||
"""Bug #13174."""
|
||||
holder = Holder.objects.create(dummy=42)
|
||||
Inner.objects.create(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,))
|
||||
)
|
||||
self.assertContains(response, '<label>Inner readonly label:</label>')
|
||||
|
||||
def test_many_to_many_inlines(self):
|
||||
"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
|
||||
self.assertContains(response, '<h2>Author-book relationships</h2>')
|
||||
# The "add another" label is correct
|
||||
|
@ -78,7 +82,7 @@ class TestInline(TestCase):
|
|||
'max_weight': 0,
|
||||
'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(len(Fashionista.objects.filter(person__firstname='Imelda')), 1)
|
||||
|
||||
|
@ -95,7 +99,7 @@ class TestInline(TestCase):
|
|||
'title_set-0-title1': 'a 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.
|
||||
self.assertContains(response, '<tr><td colspan="4"><ul class="errorlist nonfield"><li>The two titles must be the same</li></ul></td></tr>')
|
||||
|
||||
|
@ -103,14 +107,14 @@ class TestInline(TestCase):
|
|||
"""Admin inline `readonly_field` shouldn't invoke parent ModelAdmin callable"""
|
||||
# Identically named callable isn't present in the parent ModelAdmin,
|
||||
# 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)
|
||||
# View should have the child inlines section
|
||||
self.assertContains(response, '<div class="inline-group" id="chapter_set-group">')
|
||||
|
||||
def test_callable_lookup(self):
|
||||
"""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)
|
||||
# Add parent object view should have the child inlines section
|
||||
self.assertContains(response, '<div class="inline-group" id="question_set-group">')
|
||||
|
@ -124,11 +128,11 @@ class TestInline(TestCase):
|
|||
using both the stacked and tabular layouts.
|
||||
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, '<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
|
||||
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)
|
||||
|
||||
def test_inline_hidden_field_no_column(self):
|
||||
|
@ -136,7 +140,7 @@ class TestInline(TestCase):
|
|||
parent = SomeParentModel.objects.create(name='a')
|
||||
SomeChildModel.objects.create(name='b', position='0', 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.assertContains(response, (
|
||||
'<input id="id_somechildmodel_set-1-position" '
|
||||
|
@ -147,7 +151,7 @@ class TestInline(TestCase):
|
|||
Ensure that multiple inlines with related_name='+' have correct form
|
||||
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,
|
||||
'<input type="hidden" name="-1-0-id" id="id_-1-0-id" />', html=True)
|
||||
|
@ -173,7 +177,7 @@ class TestInline(TestCase):
|
|||
"""
|
||||
holder = Holder.objects.create(pk=123456789, dummy=42)
|
||||
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)
|
||||
self.assertContains(response, inner_shortcut)
|
||||
|
||||
|
@ -185,7 +189,7 @@ class TestInline(TestCase):
|
|||
parent = ParentModelWithCustomPk.objects.create(my_own_pk="foo", name="Foo")
|
||||
child1 = ChildModel1.objects.create(my_own_pk="bar", name="Bar", 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)
|
||||
child2_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(child2).pk, child2.pk)
|
||||
self.assertContains(response, child1_shortcut)
|
||||
|
@ -204,7 +208,7 @@ class TestInline(TestCase):
|
|||
'sighting_set-0-place': 'Zone 51',
|
||||
'_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(Sighting.objects.filter(et__name='Martian').count(), 1)
|
||||
|
||||
|
@ -218,11 +222,11 @@ class TestInline(TestCase):
|
|||
# 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" />'
|
||||
|
||||
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, 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, total_forms_hidden)
|
||||
|
||||
|
@ -241,7 +245,7 @@ class TestInline(TestCase):
|
|||
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" />'
|
||||
|
||||
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)
|
||||
response = modeladmin.changeform_view(request)
|
||||
self.assertContains(response, min_forms)
|
||||
|
@ -269,20 +273,20 @@ class TestInline(TestCase):
|
|||
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" />'
|
||||
|
||||
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)
|
||||
response = modeladmin.changeform_view(request)
|
||||
self.assertContains(response, min_forms % 2)
|
||||
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)
|
||||
response = modeladmin.changeform_view(request, object_id=str(bt_head.id))
|
||||
self.assertContains(response, min_forms % 5)
|
||||
self.assertContains(response, total_forms % 8)
|
||||
|
||||
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,
|
||||
'<input id="id_nonautopkbook_set-0-rand_pk" name="nonautopkbook_set-0-rand_pk" type="hidden" />',
|
||||
html=True)
|
||||
|
@ -291,7 +295,7 @@ class TestInline(TestCase):
|
|||
html=True)
|
||||
|
||||
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,
|
||||
'<input class="vIntegerField" id="id_editablepkbook_set-0-manual_pk" name="editablepkbook_set-0-manual_pk" type="text" />',
|
||||
html=True, count=1)
|
||||
|
@ -302,7 +306,7 @@ class TestInline(TestCase):
|
|||
def test_stacked_inline_edit_form_contains_has_original_class(self):
|
||||
holder = Holder.objects.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(
|
||||
response,
|
||||
'<div class="inline-related has_original" id="inner_set-0">',
|
||||
|
@ -323,10 +327,10 @@ class TestInline(TestCase):
|
|||
('inner4stacked', item1.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)
|
||||
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))
|
||||
|
||||
def test_inlines_show_change_link_unregistered(self):
|
||||
|
@ -334,7 +338,7 @@ class TestInline(TestCase):
|
|||
parent = ParentModelWithCustomPk.objects.create(my_own_pk="foo", name="Foo")
|
||||
ChildModel1.objects.create(my_own_pk="bar", name="Bar", 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.assertNotContains(response, INLINE_CHANGELINK_HTML)
|
||||
|
||||
|
@ -342,7 +346,7 @@ class TestInline(TestCase):
|
|||
"Inlines `show_change_link` disabled by default."
|
||||
poll = Poll.objects.create(name="New 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.assertNotContains(response, INLINE_CHANGELINK_HTML)
|
||||
|
||||
|
@ -361,7 +365,7 @@ class TestInlineMedia(TestCase):
|
|||
holder = Holder(dummy=13)
|
||||
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)
|
||||
self.assertContains(response, 'my_awesome_admin_scripts.js')
|
||||
|
||||
|
@ -369,7 +373,7 @@ class TestInlineMedia(TestCase):
|
|||
holder = Holder3(dummy=13)
|
||||
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)
|
||||
self.assertContains(response, 'my_awesome_inline_scripts.js')
|
||||
|
||||
|
@ -377,7 +381,7 @@ class TestInlineMedia(TestCase):
|
|||
holder = Holder2(dummy=13)
|
||||
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)
|
||||
self.assertContains(response, 'my_awesome_admin_scripts.js')
|
||||
self.assertContains(response, 'my_awesome_inline_scripts.js')
|
||||
|
@ -438,7 +442,7 @@ class TestInlineProtectedOnDelete(TestCase):
|
|||
chapter = Chapter.objects.create(novel=lotr, name='Many Meetings')
|
||||
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)
|
||||
data = {
|
||||
'name': lotr.name,
|
||||
|
@ -492,14 +496,14 @@ class TestInlinePermissions(TestCase):
|
|||
|
||||
author = Author.objects.create(pk=1, name='The Author')
|
||||
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
|
||||
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
|
||||
|
||||
holder = Holder2.objects.create(dummy=13)
|
||||
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.assertEqual(
|
||||
|
@ -507,14 +511,14 @@ class TestInlinePermissions(TestCase):
|
|||
True)
|
||||
|
||||
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
|
||||
self.assertNotContains(response, '<h2>Author-book relationships</h2>')
|
||||
self.assertNotContains(response, 'Add another Author-Book Relationship')
|
||||
self.assertNotContains(response, 'id="id_Author_books-TOTAL_FORMS"')
|
||||
|
||||
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
|
||||
self.assertNotContains(response, '<h2>Inner2s</h2>')
|
||||
self.assertNotContains(response, 'Add another Inner2')
|
||||
|
@ -537,7 +541,7 @@ class TestInlinePermissions(TestCase):
|
|||
def test_inline_add_m2m_add_perm(self):
|
||||
permission = Permission.objects.get(codename='add_book', content_type=self.book_ct)
|
||||
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
|
||||
self.assertNotContains(response, '<h2>Author-book relationships</h2>')
|
||||
self.assertNotContains(response, 'Add another Author-Book Relationship')
|
||||
|
@ -546,7 +550,7 @@ class TestInlinePermissions(TestCase):
|
|||
def test_inline_add_fk_add_perm(self):
|
||||
permission = Permission.objects.get(codename='add_inner2', content_type=self.inner_ct)
|
||||
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
|
||||
self.assertContains(response, '<h2>Inner2s</h2>')
|
||||
self.assertContains(response, 'Add another Inner2')
|
||||
|
@ -666,7 +670,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
"""
|
||||
self.admin_login(username='super', password='secret')
|
||||
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'
|
||||
rows_length = lambda: len(self.selenium.find_elements_by_css_selector(
|
||||
|
@ -682,7 +686,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
def test_delete_stackeds(self):
|
||||
self.admin_login(username='super', password='secret')
|
||||
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'
|
||||
rows_length = lambda: len(self.selenium.find_elements_by_css_selector(
|
||||
|
@ -707,7 +711,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
"""
|
||||
self.admin_login(username='super', password='secret')
|
||||
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
|
||||
# correct ID.
|
||||
|
@ -764,7 +768,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
def test_delete_inlines(self):
|
||||
self.admin_login(username='super', password='secret')
|
||||
self.selenium.get('%s%s' % (self.live_server_url,
|
||||
'/admin/admin_inlines/profilecollection/add/'))
|
||||
reverse('admin:admin_inlines_profilecollection_add')))
|
||||
|
||||
# Add a few inlines
|
||||
self.selenium.find_element_by_link_text('Add another Profile').click()
|
||||
|
@ -802,7 +806,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
def test_alternating_rows(self):
|
||||
self.admin_login(username='super', password='secret')
|
||||
self.selenium.get('%s%s' % (self.live_server_url,
|
||||
'/admin/admin_inlines/profilecollection/add/'))
|
||||
reverse('admin:admin_inlines_profilecollection_add')))
|
||||
|
||||
# Add a few inlines
|
||||
self.selenium.find_element_by_link_text('Add another Profile').click()
|
||||
|
|
|
@ -27,7 +27,7 @@ class Admin2(admin.AdminSite):
|
|||
|
||||
def get_urls(self):
|
||||
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()
|
||||
|
||||
def my_view(self, request):
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -4,10 +4,10 @@ from . import admin, custom_has_permission_admin, customadmin, views
|
|||
|
||||
urlpatterns = [
|
||||
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/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/admin5/', include(admin.site2.urls)),
|
||||
url(r'^test_admin/admin7/', include(admin.site7.urls)),
|
||||
|
|
|
@ -14,6 +14,7 @@ from django.contrib.admin import widgets
|
|||
from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase
|
||||
from django.core.files.storage import default_storage
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.db.models import CharField, DateField
|
||||
from django.test import TestCase as DjangoTestCase, override_settings
|
||||
from django.utils import six, translation
|
||||
|
@ -174,7 +175,7 @@ class AdminFormfieldForDBFieldWithRequestTests(DjangoTestCase):
|
|||
Ensure the user can only see their own cars in the foreign key dropdown.
|
||||
"""
|
||||
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.assertContains(response, "Volkswagon Passat")
|
||||
|
||||
|
@ -188,7 +189,7 @@ class AdminForeignKeyWidgetChangeList(DjangoTestCase):
|
|||
self.client.login(username="super", password="secret")
|
||||
|
||||
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/')
|
||||
|
||||
|
||||
|
@ -209,7 +210,7 @@ class AdminForeignKeyRawIdWidget(DjangoTestCase):
|
|||
}
|
||||
# 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('/admin_widgets/event/add/', post_data)
|
||||
response = self.client.post(reverse('admin:admin_widgets_event_add'), post_data)
|
||||
self.assertContains(response,
|
||||
'Select a valid choice. That choice is not one of the available choices.')
|
||||
|
||||
|
@ -217,7 +218,7 @@ class AdminForeignKeyRawIdWidget(DjangoTestCase):
|
|||
|
||||
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.
|
||||
response = self.client.post('/admin_widgets/event/add/',
|
||||
response = self.client.post(reverse('admin:admin_widgets_event_add'),
|
||||
{"main_band": test_str})
|
||||
|
||||
self.assertContains(response,
|
||||
|
@ -383,7 +384,7 @@ class AdminFileWidgetTests(DjangoTestCase):
|
|||
File widgets should render as a link when they're marked "read only."
|
||||
"""
|
||||
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(
|
||||
response,
|
||||
'<p><a href="%(STORAGE_URL)salbums/hybrid_theory.jpg">'
|
||||
|
@ -582,7 +583,7 @@ class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
self.admin_login(username='super', password='secret', login_url='/')
|
||||
# Open a page that has a date and time picker widgets
|
||||
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 ---------------------------------
|
||||
# Check that the date picker is hidden
|
||||
|
@ -622,7 +623,7 @@ class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
self.admin_login(username='super', password='secret', login_url='/')
|
||||
# Open a page that has a date and time picker widgets
|
||||
self.selenium.get('%s%s' % (self.live_server_url,
|
||||
'/admin_widgets/member/add/'))
|
||||
reverse('admin:admin_widgets_member_add')))
|
||||
|
||||
# fill in the birth date.
|
||||
self.selenium.find_element_by_id('id_birthdate_0').send_keys('2013-06-01')
|
||||
|
@ -646,7 +647,7 @@ class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
self.admin_login(username='super', password='secret', login_url='/')
|
||||
# Open a page that has a date and time picker widgets
|
||||
self.selenium.get('%s%s' % (self.live_server_url,
|
||||
'/admin_widgets/member/add/'))
|
||||
reverse('admin:admin_widgets_member_add')))
|
||||
|
||||
# fill in the birth date.
|
||||
self.selenium.find_element_by_id('id_birthdate_0').send_keys('2013-06-01')
|
||||
|
@ -672,7 +673,7 @@ class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
self.admin_login(username='super', password='secret', login_url='/')
|
||||
# Open a page that has a date and time picker widgets
|
||||
self.selenium.get('%s%s' % (self.live_server_url,
|
||||
'/admin_widgets/member/add/'))
|
||||
reverse('admin:admin_widgets_member_add')))
|
||||
|
||||
# Click the calendar icon
|
||||
self.selenium.find_element_by_id('calendarlink0').click()
|
||||
|
@ -718,7 +719,7 @@ class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
|
||||
# Open a page that has a date picker widget
|
||||
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
|
||||
self.selenium.find_element_by_id('calendarlink0').click()
|
||||
|
@ -772,7 +773,7 @@ class DateTimePickerShortcutsSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase
|
|||
now = datetime.now()
|
||||
|
||||
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')
|
||||
|
||||
|
@ -949,8 +950,8 @@ class HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCas
|
|||
self.school.save()
|
||||
|
||||
self.admin_login(username='super', password='secret', login_url='/')
|
||||
self.selenium.get(
|
||||
'%s%s' % (self.live_server_url, '/admin_widgets/school/%s/' % self.school.id))
|
||||
self.selenium.get('%s%s' % (
|
||||
self.live_server_url, reverse('admin:admin_widgets_school_change', args=(self.school.id,))))
|
||||
|
||||
self.wait_page_loaded()
|
||||
self.execute_basic_operations('vertical', 'students')
|
||||
|
@ -978,7 +979,7 @@ class HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCas
|
|||
|
||||
self.admin_login(username='super', password='secret', login_url='/')
|
||||
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']:
|
||||
from_box = '#id_%s_from' % field_name
|
||||
|
@ -1079,7 +1080,7 @@ class AdminRawIdWidgetSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
def test_ForeignKey(self):
|
||||
self.admin_login(username='super', password='secret', login_url='/')
|
||||
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
|
||||
|
||||
# No value has been selected yet
|
||||
|
@ -1114,7 +1115,7 @@ class AdminRawIdWidgetSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
def test_many_to_many(self):
|
||||
self.admin_login(username='super', password='secret', login_url='/')
|
||||
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
|
||||
|
||||
# No value has been selected yet
|
||||
|
@ -1166,7 +1167,7 @@ class RelatedFieldWidgetSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
self.admin_login(username='super', password='secret', login_url='/')
|
||||
self.selenium.get('%s%s' % (
|
||||
self.live_server_url,
|
||||
'/admin_widgets/profile/add/'))
|
||||
reverse('admin:admin_widgets_profile_add')))
|
||||
|
||||
main_window = self.selenium.current_window_handle
|
||||
# Click the Add User button to add new
|
||||
|
|
Loading…
Reference in New Issue