Browse Source

Corrige apagados que geram ocorrencias fk

migracao
Marcio Mazza 6 years ago
parent
commit
52237dcac0
  1. 34
      sapl/legacy/migracao_dados.py

34
sapl/legacy/migracao_dados.py

@ -1820,7 +1820,11 @@ def gravar_marco(
def encode_version(version): def encode_version(version):
# version.id seria suficiente
# os campos reduntandes servem como conferência tanto visual
# como de consistencia da restauracao posterior
return { return {
"id": version.id,
"content_type__model": version.content_type.model, "content_type__model": version.content_type.model,
"object_id": version.object_id, "object_id": version.object_id,
} }
@ -1839,24 +1843,26 @@ def get_apagados_que_geram_ocorrencias_fk(fks_faltando):
apagados = set() apagados = set()
for fk in fks_faltando: for fk in fks_faltando:
model_dependente = tabela_legado_p_model[fk["tabela"]] model_dependente = tabela_legado_p_model[fk["tabela"]]
if model_dependente == Autor: # não funciona para models em que o mapeamento de campos nao é direto
# isso não funciona para Autor... if model_dependente == Participacao:
continue model_relacionado = {
nome_campo_fk = { "cod_comissao": Comissao,
v: k for k, v in field_renames[model_dependente].items() "cod_parlamentar": Parlamentar,
}[fk["campo"]] }[fk["campo"]]
campo_fk = model_dependente._meta.get_field(nome_campo_fk) else:
model_relacionado = campo_fk.related_model 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( _, tabela_relacionada, [campo_pk] = get_estrutura_legado(
model_relacionado model_relacionado
) )
deleted = Version.objects.get_deleted(model_relacionado) deleted = Version.objects.get_deleted(model_relacionado)
version = deleted.get(object_id=fk["valor"]) version = deleted.get(object_id=fk["valor"])
apagados.add((tabela_relacionada, campo_pk, version)) apagados.add((tabela_relacionada, campo_pk, version))
return [ return [(*_, encode_version(version)) for *_, version in apagados]
(tabela_relacionada, campo_pk, encode_version(version))
for tabela, campo_pk, version in apagados
]
def revert_delete_producao(dados_versions): def revert_delete_producao(dados_versions):
@ -1865,8 +1871,6 @@ def revert_delete_producao(dados_versions):
print("Revertendo registros apagados em produção...") print("Revertendo registros apagados em produção...")
for dados in dados_versions: for dados in dados_versions:
print(dados) print(dados)
version = Version.objects.get( version = Version.objects.get(**dados)
**dados, revision__comment__contains="Deletado"
)
version.revert() version.revert()
print("... sucesso") print("... sucesso")

Loading…
Cancel
Save