From 52237dcac07df35aa759c9497b4ce80e8dd3441e Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Sat, 25 May 2019 14:08:31 +0200 Subject: [PATCH] Corrige apagados que geram ocorrencias fk --- sapl/legacy/migracao_dados.py | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/sapl/legacy/migracao_dados.py b/sapl/legacy/migracao_dados.py index 1d3209d55..56d738faa 100644 --- a/sapl/legacy/migracao_dados.py +++ b/sapl/legacy/migracao_dados.py @@ -1820,7 +1820,11 @@ def gravar_marco( def encode_version(version): + # version.id seria suficiente + # os campos reduntandes servem como conferência tanto visual + # como de consistencia da restauracao posterior return { + "id": version.id, "content_type__model": version.content_type.model, "object_id": version.object_id, } @@ -1839,24 +1843,26 @@ def get_apagados_que_geram_ocorrencias_fk(fks_faltando): apagados = set() for fk in fks_faltando: model_dependente = tabela_legado_p_model[fk["tabela"]] - if model_dependente == Autor: - # isso não funciona para Autor... - continue - nome_campo_fk = { - v: k for k, v in field_renames[model_dependente].items() - }[fk["campo"]] - campo_fk = model_dependente._meta.get_field(nome_campo_fk) - model_relacionado = campo_fk.related_model + # não funciona para models em que o mapeamento de campos nao é direto + if model_dependente == Participacao: + model_relacionado = { + "cod_comissao": Comissao, + "cod_parlamentar": Parlamentar, + }[fk["campo"]] + else: + nome_campo_fk = { + v: k for k, v in field_renames[model_dependente].items() + }[fk["campo"]] + campo_fk = model_dependente._meta.get_field(nome_campo_fk) + model_relacionado = campo_fk.related_model + _, tabela_relacionada, [campo_pk] = get_estrutura_legado( model_relacionado ) deleted = Version.objects.get_deleted(model_relacionado) version = deleted.get(object_id=fk["valor"]) apagados.add((tabela_relacionada, campo_pk, version)) - return [ - (tabela_relacionada, campo_pk, encode_version(version)) - for tabela, campo_pk, version in apagados - ] + return [(*_, encode_version(version)) for *_, version in apagados] def revert_delete_producao(dados_versions): @@ -1865,8 +1871,6 @@ def revert_delete_producao(dados_versions): print("Revertendo registros apagados em produção...") for dados in dados_versions: print(dados) - version = Version.objects.get( - **dados, revision__comment__contains="Deletado" - ) + version = Version.objects.get(**dados) version.revert() print("... sucesso")