mirror of
https://github.com/django/django.git
synced 2025-06-05 03:29:12 +00:00
Changed reduce method lookup in migration optimizer to dict
Thanks Andrew Godwin and Simon Charette for the review.
This commit is contained in:
parent
4a7d374fd5
commit
432623603c
@ -31,113 +31,32 @@ class MigrationOptimizer(object):
|
|||||||
AddField,
|
AddField,
|
||||||
AlterField,
|
AlterField,
|
||||||
)
|
)
|
||||||
self.reduce_methods = [
|
self.reduce_methods = {
|
||||||
(
|
(AddField, AlterField): self.reduce_add_field_alter_field,
|
||||||
CreateModel,
|
(AddField, RemoveField): self.reduce_add_field_delete_field,
|
||||||
DeleteModel,
|
(AlterField, RemoveField): self.reduce_alter_field_delete_field,
|
||||||
self.reduce_model_create_delete,
|
(CreateModel, AddField): self.reduce_create_model_add_field,
|
||||||
),
|
(CreateModel, AlterField): self.reduce_create_model_alter_field,
|
||||||
(
|
(CreateModel, DeleteModel): self.reduce_model_create_delete,
|
||||||
AlterModelTable,
|
(CreateModel, RemoveField): self.reduce_create_model_remove_field,
|
||||||
DeleteModel,
|
(CreateModel, RenameModel): self.reduce_model_create_rename,
|
||||||
self.reduce_model_alter_delete,
|
(RenameModel, RenameModel): self.reduce_model_rename_self,
|
||||||
),
|
|
||||||
(
|
(AlterIndexTogether, DeleteModel): self.reduce_model_alter_delete,
|
||||||
AlterUniqueTogether,
|
(AlterModelTable, DeleteModel): self.reduce_model_alter_delete,
|
||||||
DeleteModel,
|
(AlterOrderWithRespectTo, DeleteModel): self.reduce_model_alter_delete,
|
||||||
self.reduce_model_alter_delete,
|
(AlterUniqueTogether, DeleteModel): self.reduce_model_alter_delete,
|
||||||
),
|
|
||||||
(
|
(AlterIndexTogether, AlterIndexTogether): self.reduce_model_alter_alter,
|
||||||
AlterIndexTogether,
|
(AlterModelTable, AlterModelTable): self.reduce_model_alter_alter,
|
||||||
DeleteModel,
|
(AlterOrderWithRespectTo, AlterOrderWithRespectTo): self.reduce_model_alter_alter,
|
||||||
self.reduce_model_alter_delete,
|
(AlterUniqueTogether, AlterUniqueTogether): self.reduce_model_alter_alter,
|
||||||
),
|
|
||||||
(
|
(AddField, RenameField): self.reduce_add_field_rename_field,
|
||||||
AlterOrderWithRespectTo,
|
(AlterField, RenameField): self.reduce_alter_field_rename_field,
|
||||||
DeleteModel,
|
(CreateModel, RenameField): self.reduce_create_model_rename_field,
|
||||||
self.reduce_model_alter_delete,
|
(RenameField, RenameField): self.reduce_rename_field_self,
|
||||||
),
|
}
|
||||||
(
|
|
||||||
AlterModelTable,
|
|
||||||
AlterModelTable,
|
|
||||||
self.reduce_model_alter_alter,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
AlterUniqueTogether,
|
|
||||||
AlterUniqueTogether,
|
|
||||||
self.reduce_model_alter_alter,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
AlterIndexTogether,
|
|
||||||
AlterIndexTogether,
|
|
||||||
self.reduce_model_alter_alter,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
AlterOrderWithRespectTo,
|
|
||||||
AlterOrderWithRespectTo,
|
|
||||||
self.reduce_model_alter_alter,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
CreateModel,
|
|
||||||
RenameModel,
|
|
||||||
self.reduce_model_create_rename,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
RenameModel,
|
|
||||||
RenameModel,
|
|
||||||
self.reduce_model_rename_self,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
CreateModel,
|
|
||||||
AddField,
|
|
||||||
self.reduce_create_model_add_field,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
CreateModel,
|
|
||||||
AlterField,
|
|
||||||
self.reduce_create_model_alter_field,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
CreateModel,
|
|
||||||
RemoveField,
|
|
||||||
self.reduce_create_model_remove_field,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
AddField,
|
|
||||||
AlterField,
|
|
||||||
self.reduce_add_field_alter_field,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
AddField,
|
|
||||||
RemoveField,
|
|
||||||
self.reduce_add_field_delete_field,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
AlterField,
|
|
||||||
RemoveField,
|
|
||||||
self.reduce_alter_field_delete_field,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
AddField,
|
|
||||||
RenameField,
|
|
||||||
self.reduce_add_field_rename_field,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
AlterField,
|
|
||||||
RenameField,
|
|
||||||
self.reduce_alter_field_rename_field,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
CreateModel,
|
|
||||||
RenameField,
|
|
||||||
self.reduce_create_model_rename_field,
|
|
||||||
),
|
|
||||||
(
|
|
||||||
RenameField,
|
|
||||||
RenameField,
|
|
||||||
self.reduce_rename_field_self,
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
def optimize(self, operations, app_label=None):
|
def optimize(self, operations, app_label=None):
|
||||||
"""
|
"""
|
||||||
@ -197,9 +116,9 @@ class MigrationOptimizer(object):
|
|||||||
Either returns a list of zero, one or two operations,
|
Either returns a list of zero, one or two operations,
|
||||||
or None, meaning this pair cannot be optimized.
|
or None, meaning this pair cannot be optimized.
|
||||||
"""
|
"""
|
||||||
for ia, ib, om in self.reduce_methods:
|
method = self.reduce_methods.get((type(operation), type(other)))
|
||||||
if isinstance(operation, ia) and isinstance(other, ib):
|
if method:
|
||||||
return om(operation, other, in_between or [])
|
return method(operation, other, in_between or [])
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def model_to_key(self, model):
|
def model_to_key(self, model):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user