diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/migrations/writer.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/django/db/migrations/writer.py b/django/db/migrations/writer.py index 68f3eb50ce..dbeaae184c 100644 --- a/django/db/migrations/writer.py +++ b/django/db/migrations/writer.py @@ -6,6 +6,7 @@ import decimal import collections from importlib import import_module import os +import re import sys import types @@ -17,6 +18,9 @@ from django.utils.encoding import force_text from django.utils.functional import Promise +COMPILED_REGEX_TYPE = type(re.compile('')) + + class SettingsReference(str): """ Special subclass of string which actually references a current settings @@ -344,6 +348,17 @@ class MigrationWriter(object): # "()", not "(,)" because (,) is invalid Python syntax. format = "(%s)" if len(strings) != 1 else "(%s,)" return format % (", ".join(strings)), imports + # Compiled regex + elif isinstance(value, COMPILED_REGEX_TYPE): + imports = set(["import re"]) + regex_pattern, pattern_imports = cls.serialize(value.pattern) + regex_flags, flag_imports = cls.serialize(value.flags) + imports.update(pattern_imports) + imports.update(flag_imports) + args = [regex_pattern] + if value.flags: + args.append(regex_flags) + return "re.compile(%s)" % ', '.join(args), imports # Uh oh. else: raise ValueError("Cannot serialize: %r\nThere are some values Django cannot serialize into migration files.\nFor more, see https://docs.djangoproject.com/en/dev/topics/migrations/#migration-serializing" % value) |
