Commit 61f3e22e authored by Chris Lamb's avatar Chris Lamb Committed by Tim Graham
Browse files

Fixed #25054 -- Added app_label to swapped model AttributeError

parent 30a152a3
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -270,9 +270,13 @@ class SwappedManagerDescriptor(object):
        self.model = model

    def __get__(self, instance, type=None):
        raise AttributeError("Manager isn't available; %s has been swapped for '%s'" % (
            self.model._meta.object_name, self.model._meta.swapped
        ))
        raise AttributeError(
            "Manager isn't available; '%s.%s' has been swapped for '%s'" % (
                self.model._meta.app_label,
                self.model._meta.object_name,
                self.model._meta.swapped,
            )
        )


class EmptyManager(Manager):
+15 −17
Original line number Diff line number Diff line
@@ -109,12 +109,12 @@ class ManagersRegressionTests(TestCase):

            # Accessing the manager on a swappable model should
            # raise an attribute error with a helpful message
            try:
            msg = (
                "Manager isn't available; 'managers_regress.SwappableModel' "
                "has been swapped for 'managers_regress.Parent'"
            )
            with self.assertRaisesMessage(AttributeError, msg):
                SwappableModel.objects.all()
                self.fail('Should raise an AttributeError')
            except AttributeError as e:
                self.assertEqual(str(e), "Manager isn't available; SwappableModel has been swapped for 'managers_regress.Parent'")

        finally:
            apps.app_configs['managers_regress'].models = _old_models
            apps.all_models['managers_regress'] = _old_models
@@ -128,7 +128,6 @@ class ManagersRegressionTests(TestCase):

        try:
            class SwappableModel(models.Model):

                stuff = models.Manager()

                class Meta:
@@ -137,12 +136,12 @@ class ManagersRegressionTests(TestCase):
            # Accessing the manager on a swappable model with an
            # explicit manager should raise an attribute error with a
            # helpful message
            try:
            msg = (
                "Manager isn't available; 'managers_regress.SwappableModel' "
                "has been swapped for 'managers_regress.Parent'"
            )
            with self.assertRaisesMessage(AttributeError, msg):
                SwappableModel.stuff.all()
                self.fail('Should raise an AttributeError')
            except AttributeError as e:
                self.assertEqual(str(e), "Manager isn't available; SwappableModel has been swapped for 'managers_regress.Parent'")

        finally:
            apps.app_configs['managers_regress'].models = _old_models
            apps.all_models['managers_regress'] = _old_models
@@ -156,7 +155,6 @@ class ManagersRegressionTests(TestCase):

        try:
            class SwappableModel(models.Model):

                objects = models.Manager()

                class Meta:
@@ -165,12 +163,12 @@ class ManagersRegressionTests(TestCase):
            # Accessing the manager on a swappable model with an
            # explicit manager should raise an attribute error with a
            # helpful message
            try:
            msg = (
                "Manager isn't available; 'managers_regress.SwappableModel' "
                "has been swapped for 'managers_regress.Parent'"
            )
            with self.assertRaisesMessage(AttributeError, msg):
                SwappableModel.objects.all()
                self.fail('Should raise an AttributeError')
            except AttributeError as e:
                self.assertEqual(str(e), "Manager isn't available; SwappableModel has been swapped for 'managers_regress.Parent'")

        finally:
            apps.app_configs['managers_regress'].models = _old_models
            apps.all_models['managers_regress'] = _old_models