From 065a1980ce256513177368d390220ef3a627eada Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Thu, 8 Mar 2018 16:28:41 -0300 Subject: [PATCH] =?UTF-8?q?Refatora=20ordem=20de=20migra=C3=A7=C3=A3o=20de?= =?UTF-8?q?=20TipoProposicao?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit para indicar o motivo correto --- sapl/legacy/migracao_dados.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/sapl/legacy/migracao_dados.py b/sapl/legacy/migracao_dados.py index 0f2be3883..55db4999f 100644 --- a/sapl/legacy/migracao_dados.py +++ b/sapl/legacy/migracao_dados.py @@ -701,17 +701,24 @@ class DataMigrator: def _do_migrate(self, obj): if isinstance(obj, AppConfig): - models_to_migrate = (model for model in obj.models.values() - if model in self.field_renames) - self._do_migrate(models_to_migrate) + models = [model for model in obj.models.values() + if model in self.field_renames] + + if obj.label == 'materia': + # Devido à referência TipoProposicao.tipo_conteudo_related + # a migração de TipoProposicao precisa ser feita + # após TipoMateriaLegislativa e TipoDocumento + # (porém antes de Proposicao) + models.remove(TipoProposicao) + pos_tipo_proposicao = max( + models.index(TipoMateriaLegislativa), + models.index(TipoDocumento)) + 1 + models.insert(pos_tipo_proposicao, TipoProposicao) + assert models.index(TipoProposicao) < models.index(Proposicao) + + self._do_migrate(models) elif isinstance(obj, ModelBase): - # A migração vai pular TipoProposicao e só vai migrar essa model - # antes de migrar Proposicao. Isso deve acontecer por causa da - # GenericRelation existente em TipoProposicao. - if not obj.__name__ == 'TipoProposicao': - if obj.__name__ == 'Proposicao': - self.migrate_model(TipoProposicao) - self.migrate_model(obj) + self.migrate_model(obj) elif hasattr(obj, '__iter__'): for item in obj: self._do_migrate(item)