1
0
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:
Markus Holtermann 2015-06-14 13:43:02 +02:00
parent 4a7d374fd5
commit 432623603c

View File

@ -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):