Commit 0a9c52e0 authored by Carl Meyer's avatar Carl Meyer
Browse files

Fixed #16917 -- Don't try to use the model name for a ContentType's unicode...

Fixed #16917 -- Don't try to use the model name for a ContentType's unicode representation if the model no longer exists. Thanks Ivan Sagalaev for report and patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16895 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 4dab2d2f
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -92,11 +92,11 @@ class ContentType(models.Model):
        #
        # We return self.name only when users have changed its value from the
        # initial verbose_name_raw and might rely on it.
        meta = self.model_class()._meta
        if self.name != meta.verbose_name_raw:
        model = self.model_class()
        if not model or self.name != model._meta.verbose_name_raw:
            return self.name
        else:
            return force_unicode(meta.verbose_name)
            return force_unicode(model._meta.verbose_name)

    def model_class(self):
        "Returns the Python model class for this type of content."
+13 −0
Original line number Diff line number Diff line
@@ -109,3 +109,16 @@ class ContentTypesTests(TestCase):
        obj = FooWithoutUrl.objects.create(name="john")

        self.assertRaises(Http404, shortcut, request, user_ct.id, obj.id)

    def test_missing_model(self):
        """
        Ensures that displaying content types in admin (or anywhere) doesn't
        break on leftover content type records in the DB for which no model
        is defined anymore.
        """
        ct = ContentType.objects.create(
            name = 'Old model',
            app_label = 'contenttypes',
            model = 'OldModel',
        )
        self.assertEqual(unicode(ct), u'Old model')