summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHasan Ramezani <hasan.r67@gmail.com>2019-10-02 15:19:22 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-10-03 11:17:10 +0200
commit30271a47daefdf46a8383888f5c0f051b31864e6 (patch)
tree8212faf704acbb8b8707eb8773e3cdd39ad3d52d
parent1a4db2cc2890e5bac471bb2cb17a50d4c0424525 (diff)
[3.0.x] Refs #27914 -- Fixed serialization of nested enum.Enum classes in migrations.
Backport of 6452112640081ac8838147a8ba192c45879203d8 from master
-rw-r--r--django/db/migrations/serializer.py2
-rw-r--r--tests/migrations/test_writer.py11
2 files changed, 12 insertions, 1 deletions
diff --git a/django/db/migrations/serializer.py b/django/db/migrations/serializer.py
index 8aa6a04935..7d226955d5 100644
--- a/django/db/migrations/serializer.py
+++ b/django/db/migrations/serializer.py
@@ -121,7 +121,7 @@ class EnumSerializer(BaseSerializer):
enum_class = self.value.__class__
module = enum_class.__module__
return (
- '%s.%s[%r]' % (module, enum_class.__name__, self.value.name),
+ '%s.%s[%r]' % (module, enum_class.__qualname__, self.value.name),
{'import %s' % module},
)
diff --git a/tests/migrations/test_writer.py b/tests/migrations/test_writer.py
index 7caca12b7d..ca924f35ec 100644
--- a/tests/migrations/test_writer.py
+++ b/tests/migrations/test_writer.py
@@ -184,6 +184,9 @@ class WriterTests(SimpleTestCase):
"""
Tests the migration writer (makes migration files from Migration instances)
"""
+ class NestedEnum(enum.IntEnum):
+ A = 1
+ B = 2
def safe_exec(self, string, value=None):
d = {}
@@ -289,6 +292,14 @@ class WriterTests(SimpleTestCase):
IntEnum.B,
("migrations.test_writer.IntEnum['B']", {'import migrations.test_writer'})
)
+ self.assertSerializedResultEqual(
+ self.NestedEnum.A,
+ (
+ "migrations.test_writer.WriterTests.NestedEnum['A']",
+ {'import migrations.test_writer'},
+ ),
+ )
+ self.assertSerializedEqual(self.NestedEnum.A)
field = models.CharField(default=TextEnum.B, choices=[(m.value, m) for m in TextEnum])
string = MigrationWriter.serialize(field)[0]