Commit 7140d4ad authored by Tim Graham's avatar Tim Graham
Browse files

Refs #23444 -- Removed InlineAdminForm.original_content_type_id per deprecation timeline.

parent 1bb6ecf6
Loading
Loading
Loading
Loading
+1 −19
Original line number Diff line number Diff line
@@ -14,11 +14,8 @@ from django.db.models.fields.related import ManyToManyRel
from django.forms.utils import flatatt
from django.template.defaultfilters import capfirst, linebreaksbr
from django.utils import six
from django.utils.deprecation import (
    RemovedInDjango20Warning, RemovedInDjango110Warning,
)
from django.utils.deprecation import RemovedInDjango20Warning
from django.utils.encoding import force_text, smart_text
from django.utils.functional import cached_property
from django.utils.html import conditional_escape, format_html
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
@@ -292,21 +289,6 @@ class InlineAdminForm(AdminForm):
        super(InlineAdminForm, self).__init__(form, fieldsets, prepopulated_fields,
            readonly_fields, model_admin)

    @cached_property
    def original_content_type_id(self):
        warnings.warn(
            'InlineAdminForm.original_content_type_id is deprecated and will be '
            'removed in Django 1.10. If you were using this attribute to construct '
            'the "view on site" URL, use the `absolute_url` attribute instead.',
            RemovedInDjango110Warning, stacklevel=2
        )
        if self.original is not None:
            # Since this module gets imported in the application's root package,
            # it cannot import models from other applications at the module level.
            from django.contrib.contenttypes.models import ContentType
            return ContentType.objects.get_for_model(self.original).pk
        raise AttributeError

    def __iter__(self):
        for name, options in self.fieldsets:
            yield InlineFieldset(self.formset, self.form, name,
+0 −24
Original line number Diff line number Diff line
from __future__ import unicode_literals

import datetime
import warnings

from django.contrib.admin import ModelAdmin, TabularInline
from django.contrib.admin.helpers import InlineAdminForm
@@ -10,7 +9,6 @@ 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

from .admin import InnerInline, site as admin_site
from .models import (
@@ -458,28 +456,6 @@ class TestInlineAdminForm(TestCase):
        parent_ct = ContentType.objects.get_for_model(Parent)
        self.assertEqual(iaf.original.content_type, parent_ct)

    def test_original_content_type_id_deprecated(self):
        """
        #23444 -- Verify a warning is raised when accessing
        `original_content_type_id` attribute of `InlineAdminForm` object.
        """
        iaf = InlineAdminForm(None, None, {}, {}, None)
        poll = Poll.objects.create(name="poll")
        iaf2 = InlineAdminForm(None, None, {}, {}, poll)
        poll_ct = ContentType.objects.get_for_model(Poll)
        with warnings.catch_warnings(record=True) as recorded:
            warnings.filterwarnings('always')
            with self.assertRaises(AttributeError):
                iaf.original_content_type_id
            msg = force_text(recorded.pop().message)
            self.assertEqual(
                msg,
                'InlineAdminForm.original_content_type_id is deprecated and will be '
                'removed in Django 1.10. If you were using this attribute to construct '
                'the "view on site" URL, use the `absolute_url` attribute instead.'
            )
            self.assertEqual(iaf2.original_content_type_id, poll_ct.id)


@override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
    ROOT_URLCONF="admin_inlines.urls")