Browse Source

Adiciona opção de resolver apagados em producao pré apagando

migracao
Marcio Mazza 6 years ago
parent
commit
ac82f5e597
  1. 19
      sapl/legacy/migracao_dados.py
  2. 37
      sapl/legacy/scripts/ressuscita_dependencias.py

19
sapl/legacy/migracao_dados.py

@ -1839,25 +1839,34 @@ 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:
# isso não funciona para Autor...
continue
nome_campo_fk = { nome_campo_fk = {
v: k for k, v in field_renames[model_dependente].items() v: k for k, v in field_renames[model_dependente].items()
}[fk["campo"]] }[fk["campo"]]
campo_fk = model_dependente._meta.get_field(nome_campo_fk) campo_fk = model_dependente._meta.get_field(nome_campo_fk)
model_relacionado = campo_fk.related_model model_relacionado = campo_fk.related_model
_, tabela_relacionada, _ = get_estrutura_legado(model_relacionado) _, tabela_relacionada, [campo_pk] = get_estrutura_legado(
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, version)) apagados.add((tabela_relacionada, campo_pk, version))
return [ return [
(tabela_relacionada, encode_version(version)) (tabela_relacionada, campo_pk, encode_version(version))
for tabela, version in apagados for tabela, campo_pk, version in apagados
] ]
def revert_delete_producao(dados_versions): def revert_delete_producao(dados_versions):
if not dados_versions:
return
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(**dados) version = Version.objects.get(
**dados, revision__comment__contains="Deletado"
)
version.revert() version.revert()
print("... sucesso") print("... sucesso")

37
sapl/legacy/scripts/ressuscita_dependencias.py

@ -524,26 +524,35 @@ def adiciona_ressuscitar():
acrescenta_ao_arquivo_de_ajustes(sqls) acrescenta_ao_arquivo_de_ajustes(sqls)
def adiciona_ressuscitar_apagados_em_producao(): def adiciona_resolve_apagados_em_producao(ressucitar=False):
fks_faltando = get_fks_faltando() fks_faltando = get_fks_faltando()
apagados = get_apagados_que_geram_ocorrencias_fk(fks_faltando) apagados = get_apagados_que_geram_ocorrencias_fk(fks_faltando)
reverter = [] reverter = []
links = [] linhas = []
for (tabela, version_data) in apagados: for (tabela, campo_pk, version_data) in apagados:
reverter.append(version_data) id = version_data["object_id"]
links.append(get_link(tabela, version_data["object_id"], get_slug())) if ressucitar:
reverter.append(version_data)
_, arq_revert = get_arquivos_ajustes_pre_migracao() linhas.append(get_link(tabela, id, get_slug()))
arq_revert.write_file(pyaml.dump(reverter)) else:
links = "\n".join(links) linhas.append(
acrescenta_ao_arquivo_de_ajustes( f"update {tabela} set ind_excluido = 1 where {campo_pk} = {id};"
f""" )
linhas = "\n".join(linhas)
if ressucitar:
_, arq_revert = get_arquivos_ajustes_pre_migracao()
arq_revert.write_file(pyaml.dump(reverter))
texto = f"""
/* RESSUSCITADOS /* RESSUSCITADOS
Apagados no sapl 3.1 que precisaram ser restaurados: Apagados no sapl 3.1 que precisaram ser restaurados:
{links} {linhas}
*/ */
""" """
) else:
texto = f"""
-- apagados em producao - apagado tb aqui p usar propagacoes de exclusao
{linhas}
"""
acrescenta_ao_arquivo_de_ajustes(texto)

Loading…
Cancel
Save