Browse Source

Melhora restringe_e_reaponta_tipo_autor

migracao
Marcio Mazza 6 years ago
parent
commit
01abae3ab0
  1. 28
      sapl/legacy/migracao_dados.py

28
sapl/legacy/migracao_dados.py

@ -743,18 +743,36 @@ def apaga_ref_a_mats_e_docs_inexistentes_em_proposicoes():
def restringe_e_reaponta_tipo_autor():
# restringe somente ao realmente utilizado
# e corrige um erro comum
exec_legado(
"""delete from tipo_autor where tip_autor not in (
select distinct(tip_autor) from autor)"""
select distinct(tip_autor) from autor);
update tipo_autor set des_tipo_autor = 'Comissão'
where des_tipo_autor = 'Comissao';
"""
)
conflitos, max_id = encontra_conflitos_tipo_autor()
for id_novo, id_antigo in enumerate(conflitos, max_id + 1):
exec_legado(
f"""
def sql_reaponta_tipo_autor(id_novo, id_antigo):
return f"""
update tipo_autor set tip_autor = {id_novo} where tip_autor = {id_antigo};
update autor set tip_autor = {id_novo} where tip_autor = {id_antigo};
"""
)
# tenta reapontar para o que é usado agora
conflitos_restantes = []
for id_antigo, (descricao_no_legado, *_) in conflitos.items():
tipo_novo = TipoAutor.objects.filter(descricao=descricao_no_legado)
if tipo_novo:
[tipo_novo] = tipo_novo
id_novo = tipo_novo.id
exec_legado(sql_reaponta_tipo_autor(id_novo, id_antigo))
else:
conflitos_restantes.append(id_antigo)
# reaponta para novos ids
for id_novo, id_antigo in enumerate(conflitos_restantes, max_id + 1):
exec_legado(sql_reaponta_tipo_autor(id_novo, id_antigo))
def uniformiza_banco(primeira_migracao):

Loading…
Cancel
Save