Browse Source

Restaura deps de autor (generic relation)

migracao
Marcio Mazza 6 years ago
parent
commit
c49c9a3277
  1. 24
      sapl/legacy/migracao_dados.py

24
sapl/legacy/migracao_dados.py

@ -1862,7 +1862,7 @@ def get_apagados_que_geram_ocorrencias_fk(fks_faltando):
for fk in fks_faltando:
model_dependente = tabela_legado_p_model[fk["tabela"]]
# não funciona para models em que o mapeamento de campos nao é direto
if model_dependente == Participacao:
if model_dependente in (Participacao, Autor):
model_relacionado = {
"cod_comissao": Comissao,
"cod_parlamentar": Parlamentar,
@ -1882,6 +1882,10 @@ def get_apagados_que_geram_ocorrencias_fk(fks_faltando):
if versions:
[version] = versions # se há, deve ser único
apagados.add((tabela_relacionada, campo_pk, version))
# XXX poderíamos gerar aqui os parlementares apontados por autor
# para listar como restaurado para o usuário
# ... mas já está demais
# nós restauramos no método abaixo, mesmo sem o feedback desse detalhe
return [(*_, encode_version(version)) for *_, version in apagados]
@ -1889,8 +1893,26 @@ def revert_delete_producao(dados_versions):
if not dados_versions:
return
print("Revertendo registros apagados em produção...")
restaurados = []
for dados in dados_versions:
print(dados)
version = Version.objects.get(**dados)
version.revert()
reverted = version.object
assert reverted
restaurados.append(reverted)
# restauramos objetos relacinados ao autor
# teoricamente precisaríamos fazer isso pra todas as generic relations
if isinstance(reverted, Autor):
apagados_relacionados = Version.objects.get_deleted(
reverted.content_type.model_class()
)
rel = apagados_relacionados.filter(object_id=reverted.object_id)
if rel:
[rel] = rel
rel.revert()
assert reverted.autor_related
assert reverted.autor_related == rel.object
restaurados.append(rel)
print("... sucesso")

Loading…
Cancel
Save