summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Helba <brian.helba@kitware.com>2022-03-29 19:57:59 -0400
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-04-04 07:38:15 +0200
commit2d5215c675c2f128f7e9fc296cd5a0a5a527dff4 (patch)
tree91e7d771215b21d986ec01bb31d42e01595f8d69
parent13a9cde133ac82e33dd091ca9bb9c677804afbe1 (diff)
Fixed #33605 -- Fixed migration crash when altering RegexValidator to pre-compiled regular expression.
-rw-r--r--django/db/migrations/utils.py2
-rw-r--r--tests/migrations/test_autodetector.py31
2 files changed, 33 insertions, 0 deletions
diff --git a/django/db/migrations/utils.py b/django/db/migrations/utils.py
index 2b45a6033b..6eb5a4c68f 100644
--- a/django/db/migrations/utils.py
+++ b/django/db/migrations/utils.py
@@ -15,6 +15,8 @@ class RegexObject:
self.flags = obj.flags
def __eq__(self, other):
+ if not isinstance(other, RegexObject):
+ return NotImplemented
return self.pattern == other.pattern and self.flags == other.flags
diff --git a/tests/migrations/test_autodetector.py b/tests/migrations/test_autodetector.py
index 8ddb339002..0d7a44e42d 100644
--- a/tests/migrations/test_autodetector.py
+++ b/tests/migrations/test_autodetector.py
@@ -2410,6 +2410,37 @@ class AutodetectorTests(TestCase):
self.assertNumberMigrations(changes, "testapp", 1)
self.assertOperationTypes(changes, "testapp", 0, ["AlterField"])
+ def test_alter_regex_string_to_compiled_regex(self):
+ regex_string = "^[a-z]+$"
+ from_state = ModelState(
+ "testapp",
+ "model",
+ [
+ (
+ "id",
+ models.AutoField(
+ primary_key=True, validators=[RegexValidator(regex_string)]
+ ),
+ )
+ ],
+ )
+ to_state = ModelState(
+ "testapp",
+ "model",
+ [
+ (
+ "id",
+ models.AutoField(
+ primary_key=True,
+ validators=[RegexValidator(re.compile(regex_string))],
+ ),
+ )
+ ],
+ )
+ changes = self.get_changes([from_state], [to_state])
+ self.assertNumberMigrations(changes, "testapp", 1)
+ self.assertOperationTypes(changes, "testapp", 0, ["AlterField"])
+
def test_empty_foo_together(self):
"""
#23452 - Empty unique/index_together shouldn't generate a migration.