Revert "Fixed #23892 -- Made deconstructible classes forwards compatible"
This reverts commit f36151ed16
.
Adding kwargs to deconstructed objects does not achieve useful
forward-compatibility in general, since additional arguments are silently
dropped rather than having their intended effect. In fact, it can make the
failure more difficult to diagnose. Thanks Shai Berger for discussion.
This commit is contained in:
parent
f36151ed16
commit
bcb693ebd4
|
@ -5,7 +5,7 @@ from django.db.migrations.operations.base import Operation
|
|||
class CreateExtension(Operation):
|
||||
reversible = True
|
||||
|
||||
def __init__(self, name, **kwargs):
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
def state_forwards(self, app_label, state):
|
||||
|
@ -23,7 +23,7 @@ class CreateExtension(Operation):
|
|||
|
||||
class HStoreExtension(CreateExtension):
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
def __init__(self):
|
||||
self.name = 'hstore'
|
||||
|
||||
def database_forwards(self, app_label, schema_editor, from_state, to_state):
|
||||
|
|
|
@ -30,7 +30,7 @@ class KeysValidator(object):
|
|||
}
|
||||
strict = False
|
||||
|
||||
def __init__(self, keys, strict=False, messages=None, **kwargs):
|
||||
def __init__(self, keys, strict=False, messages=None):
|
||||
self.keys = set(keys)
|
||||
self.strict = strict
|
||||
if messages is not None:
|
||||
|
|
|
@ -150,7 +150,7 @@ class FileSystemStorage(Storage):
|
|||
"""
|
||||
|
||||
def __init__(self, location=None, base_url=None, file_permissions_mode=None,
|
||||
directory_permissions_mode=None, **kwargs):
|
||||
directory_permissions_mode=None):
|
||||
if location is None:
|
||||
location = settings.MEDIA_ROOT
|
||||
self.base_location = location
|
||||
|
|
|
@ -23,7 +23,7 @@ class RegexValidator(object):
|
|||
inverse_match = False
|
||||
flags = 0
|
||||
|
||||
def __init__(self, regex=None, message=None, code=None, inverse_match=None, flags=None, **kwargs):
|
||||
def __init__(self, regex=None, message=None, code=None, inverse_match=None, flags=None):
|
||||
if regex is not None:
|
||||
self.regex = regex
|
||||
if message is not None:
|
||||
|
@ -134,7 +134,7 @@ class EmailValidator(object):
|
|||
re.IGNORECASE)
|
||||
domain_whitelist = ['localhost']
|
||||
|
||||
def __init__(self, message=None, code=None, whitelist=None, **kwargs):
|
||||
def __init__(self, message=None, code=None, whitelist=None):
|
||||
if message is not None:
|
||||
self.message = message
|
||||
if code is not None:
|
||||
|
@ -251,7 +251,7 @@ class BaseValidator(object):
|
|||
message = _('Ensure this value is %(limit_value)s (it is %(show_value)s).')
|
||||
code = 'limit_value'
|
||||
|
||||
def __init__(self, limit_value, message=None, **kwargs):
|
||||
def __init__(self, limit_value, message=None):
|
||||
self.limit_value = limit_value
|
||||
if message:
|
||||
self.message = message
|
||||
|
|
|
@ -37,9 +37,6 @@ class Operation(object):
|
|||
self._constructor_args = (args, kwargs)
|
||||
return self
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
pass
|
||||
|
||||
def deconstruct(self):
|
||||
"""
|
||||
Returns a 3-tuple of class import path (or just name if it lives
|
||||
|
|
|
@ -10,7 +10,7 @@ class AddField(Operation):
|
|||
Adds a field to a model.
|
||||
"""
|
||||
|
||||
def __init__(self, model_name, name, field, preserve_default=True, **kwargs):
|
||||
def __init__(self, model_name, name, field, preserve_default=True):
|
||||
self.model_name = model_name
|
||||
self.name = name
|
||||
self.field = field
|
||||
|
@ -69,7 +69,7 @@ class RemoveField(Operation):
|
|||
Removes a field from a model.
|
||||
"""
|
||||
|
||||
def __init__(self, model_name, name, **kwargs):
|
||||
def __init__(self, model_name, name):
|
||||
self.model_name = model_name
|
||||
self.name = name
|
||||
|
||||
|
@ -113,7 +113,7 @@ class AlterField(Operation):
|
|||
Alters a field's database column (e.g. null, max_length) to the provided new field
|
||||
"""
|
||||
|
||||
def __init__(self, model_name, name, field, preserve_default=True, **kwargs):
|
||||
def __init__(self, model_name, name, field, preserve_default=True):
|
||||
self.model_name = model_name
|
||||
self.name = name
|
||||
self.field = field
|
||||
|
@ -177,7 +177,7 @@ class RenameField(Operation):
|
|||
Renames a field on the model. Might affect db_column too.
|
||||
"""
|
||||
|
||||
def __init__(self, model_name, old_name, new_name, **kwargs):
|
||||
def __init__(self, model_name, old_name, new_name):
|
||||
self.model_name = model_name
|
||||
self.old_name = old_name
|
||||
self.new_name = new_name
|
||||
|
|
|
@ -14,7 +14,7 @@ class CreateModel(Operation):
|
|||
|
||||
serialization_expand_args = ['fields', 'options']
|
||||
|
||||
def __init__(self, name, fields, options=None, bases=None, **kwargs):
|
||||
def __init__(self, name, fields, options=None, bases=None):
|
||||
self.name = name
|
||||
self.fields = fields
|
||||
self.options = options or {}
|
||||
|
@ -79,7 +79,7 @@ class DeleteModel(Operation):
|
|||
Drops a model's table.
|
||||
"""
|
||||
|
||||
def __init__(self, name, **kwargs):
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
def deconstruct(self):
|
||||
|
@ -116,7 +116,7 @@ class RenameModel(Operation):
|
|||
Renames a model.
|
||||
"""
|
||||
|
||||
def __init__(self, old_name, new_name, **kwargs):
|
||||
def __init__(self, old_name, new_name):
|
||||
self.old_name = old_name
|
||||
self.new_name = new_name
|
||||
|
||||
|
@ -209,7 +209,7 @@ class AlterModelTable(Operation):
|
|||
Renames a model's table
|
||||
"""
|
||||
|
||||
def __init__(self, name, table, **kwargs):
|
||||
def __init__(self, name, table):
|
||||
self.name = name
|
||||
self.table = table
|
||||
|
||||
|
@ -260,7 +260,7 @@ class AlterUniqueTogether(Operation):
|
|||
"""
|
||||
option_name = "unique_together"
|
||||
|
||||
def __init__(self, name, unique_together, **kwargs):
|
||||
def __init__(self, name, unique_together):
|
||||
self.name = name
|
||||
unique_together = normalize_together(unique_together)
|
||||
self.unique_together = set(tuple(cons) for cons in unique_together)
|
||||
|
@ -305,7 +305,7 @@ class AlterIndexTogether(Operation):
|
|||
"""
|
||||
option_name = "index_together"
|
||||
|
||||
def __init__(self, name, index_together, **kwargs):
|
||||
def __init__(self, name, index_together):
|
||||
self.name = name
|
||||
index_together = normalize_together(index_together)
|
||||
self.index_together = set(tuple(cons) for cons in index_together)
|
||||
|
@ -348,7 +348,7 @@ class AlterOrderWithRespectTo(Operation):
|
|||
Represents a change with the order_with_respect_to option.
|
||||
"""
|
||||
|
||||
def __init__(self, name, order_with_respect_to, **kwargs):
|
||||
def __init__(self, name, order_with_respect_to):
|
||||
self.name = name
|
||||
self.order_with_respect_to = order_with_respect_to
|
||||
|
||||
|
@ -407,7 +407,7 @@ class AlterModelOptions(Operation):
|
|||
"verbose_name_plural",
|
||||
]
|
||||
|
||||
def __init__(self, name, options, **kwargs):
|
||||
def __init__(self, name, options):
|
||||
self.name = name
|
||||
self.options = options
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ class SeparateDatabaseAndState(Operation):
|
|||
that affect the state or not the database, or so on.
|
||||
"""
|
||||
|
||||
def __init__(self, database_operations=None, state_operations=None, **kwargs):
|
||||
def __init__(self, database_operations=None, state_operations=None):
|
||||
self.database_operations = database_operations or []
|
||||
self.state_operations = state_operations or []
|
||||
|
||||
|
@ -62,7 +62,7 @@ class RunSQL(Operation):
|
|||
by this SQL change, in case it's custom column/table creation/deletion.
|
||||
"""
|
||||
|
||||
def __init__(self, sql, reverse_sql=None, state_operations=None, **kwargs):
|
||||
def __init__(self, sql, reverse_sql=None, state_operations=None):
|
||||
self.sql = sql
|
||||
self.reverse_sql = reverse_sql
|
||||
self.state_operations = state_operations or []
|
||||
|
@ -122,7 +122,7 @@ class RunPython(Operation):
|
|||
|
||||
reduces_to_sql = False
|
||||
|
||||
def __init__(self, code, reverse_code=None, atomic=True, **kwargs):
|
||||
def __init__(self, code, reverse_code=None, atomic=True):
|
||||
self.atomic = atomic
|
||||
# Forwards code
|
||||
if not callable(code):
|
||||
|
|
|
@ -77,7 +77,3 @@ Bugfixes
|
|||
|
||||
* Fixed a crash in migrations when deleting a field that is part of a
|
||||
``index/unique_together`` constraint (:ticket:`23794`).
|
||||
|
||||
* Made the initializers of deconstructible classes, such as migration
|
||||
operations and validators, accept kwargs for forwards compatibility
|
||||
(:ticket:`23892`).
|
||||
|
|
Loading…
Reference in New Issue