diff --git a/sapl/legacy/migracao_dados.py b/sapl/legacy/migracao_dados.py index 75007d821..24bc9948d 100644 --- a/sapl/legacy/migracao_dados.py +++ b/sapl/legacy/migracao_dados.py @@ -8,7 +8,6 @@ from datetime import date from functools import lru_cache, partial from itertools import groupby from operator import xor -from subprocess import PIPE, call import git import pkg_resources @@ -31,12 +30,10 @@ from unipath import Path from sapl.base.models import AppConfig as AppConf from sapl.base.models import Autor, TipoAutor, cria_models_tipo_autor from sapl.comissoes.models import Comissao, Composicao, Participacao, Reuniao -from sapl.legacy import scripts from sapl.legacy.models import NormaJuridica as OldNormaJuridica from sapl.legacy.models import TipoNumeracaoProtocolo -from sapl.legacy_migration_settings import (DATABASES, DIR_DADOS_MIGRACAO, - DIR_REPO, NOME_BANCO_LEGADO, - PROJECT_DIR) +from sapl.legacy_migration_settings import (DIR_DADOS_MIGRACAO, DIR_REPO, + NOME_BANCO_LEGADO) from sapl.materia.models import (AcompanhamentoMateria, MateriaLegislativa, Proposicao, StatusTramitacao, TipoDocumento, TipoMateriaLegislativa, TipoProposicao, @@ -222,10 +219,6 @@ class ForeignKeyFaltando(ObjectDoesNotExist): 'Uma FK aponta para um registro inexistente' def __init__(self, field, valor, old): - if (field.related_model.__name__ == 'Comissao' - and old.__class__.__name__ == 'ReuniaoComissao' - and valor == 1): - __import__('pdb').set_trace() self.field = field self.valor = valor self.old = old @@ -542,7 +535,6 @@ PROPAGACOES_DE_EXCLUSAO = [ ('sessao_plenaria', 'ordem_dia', 'cod_sessao_plen'), ('sessao_plenaria', 'expediente_materia', 'cod_sessao_plen'), ('sessao_plenaria', 'expediente_sessao_plenaria', 'cod_sessao_plen'), - ('registro_votacao', 'registro_votacao_parlamentar', 'cod_votacao'), # as consultas no código do sapl 2.5 # votacao_ordem_dia_obter_zsql e votacao_expediente_materia_obter_zsql # indicam que os registros de votação de matérias excluídas não são @@ -558,30 +550,38 @@ PROPAGACOES_DE_EXCLUSAO = [ ('materia_legislativa', 'anexada', 'cod_materia_anexada'), ('materia_legislativa', 'documento_acessorio', 'cod_materia'), ('materia_legislativa', 'numeracao', 'cod_materia'), + ('materia_legislativa', 'expediente_materia', 'cod_materia'), # norma ('norma_juridica', 'vinculo_norma_juridica', 'cod_norma_referente'), ('norma_juridica', 'vinculo_norma_juridica', 'cod_norma_referida'), + ('norma_juridica', 'legislacao_citada', 'cod_norma'), # documento administrativo ('documento_administrativo', 'tramitacao_administrativo', 'cod_documento'), ] +PROPAGACOES_DE_EXCLUSAO_REGISTROS_VOTACAO = [ + ('registro_votacao', 'registro_votacao_parlamentar', 'cod_votacao'), +] + -def propaga_exclusoes(): - for tabela_pai, tabela_filha, fk in PROPAGACOES_DE_EXCLUSAO: +def propaga_exclusoes(propagacoes): + for tabela_pai, tabela_filha, fk in propagacoes: [pk_pai] = get_pk_legado(tabela_pai) - exec_legado(''' + sql = ''' update {} set ind_excluido = 1 where {} not in ( select {} from {} where ind_excluido != 1) - '''.format(tabela_filha, fk, pk_pai, tabela_pai)) + '''.format(tabela_filha, fk, pk_pai, tabela_pai) + exec_legado(sql) def uniformiza_banco(): exec_legado('SET SESSION sql_mode = "";') # desliga checagens do mysql - propaga_exclusoes() + propaga_exclusoes(PROPAGACOES_DE_EXCLUSAO) checa_registros_votacao_ambiguos_e_remove_nao_usados() + propaga_exclusoes(PROPAGACOES_DE_EXCLUSAO_REGISTROS_VOTACAO) garante_coluna_no_legado('proposicao', 'num_proposicao int(11) NULL') @@ -870,7 +870,6 @@ def get_models_a_migrar(): if model in field_renames] # retira reuniões quando não existe na base legada # (só existe no sapl 3.0) - tabelas_legado = [t for (t,) in exec_legado('show tables')] if not EXISTE_REUNIAO_NO_LEGADO: models.remove(Reuniao) # Devido à referência TipoProposicao.tipo_conteudo_related