From b5307d32005d5aa6b1e2e6b838b9e18bb8d7559c Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Wed, 5 Feb 2020 22:44:40 +0100 Subject: [PATCH] Formata com black --- sapl/legacy/migracao_dados.py | 182 ++++++++++++++-------------------- 1 file changed, 74 insertions(+), 108 deletions(-) diff --git a/sapl/legacy/migracao_dados.py b/sapl/legacy/migracao_dados.py index 11a80cdb2..eb1b6c67e 100644 --- a/sapl/legacy/migracao_dados.py +++ b/sapl/legacy/migracao_dados.py @@ -34,22 +34,49 @@ from sapl.base.models import Autor, TipoAutor, cria_models_tipo_autor from sapl.comissoes.models import Comissao, Composicao, Participacao, Reuniao from sapl.legacy.models import NormaJuridica as OldNormaJuridica from sapl.legacy.models import Numeracao, TipoNumeracaoProtocolo -from sapl.legacy_migration_settings import (DIR_DADOS_MIGRACAO, DIR_REPO, - NOME_BANCO_LEGADO, PYTZ_TIMEZONE, - SIGLA_CASA) -from sapl.materia.models import (AcompanhamentoMateria, DocumentoAcessorio, - MateriaLegislativa, Proposicao, - StatusTramitacao, TipoDocumento, - TipoMateriaLegislativa, TipoProposicao, - Tramitacao) -from sapl.norma.models import (AssuntoNorma, NormaJuridica, NormaRelacionada, - TipoVinculoNormaJuridica) -from sapl.parlamentares.models import (Legislatura, Mandato, Parlamentar, - Partido, TipoAfastamento) -from sapl.protocoloadm.models import (DocumentoAdministrativo, Protocolo, - StatusTramitacaoAdministrativo) -from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao, OrdemDia, - RegistroVotacao, TipoResultadoVotacao) +from sapl.legacy_migration_settings import ( + DIR_DADOS_MIGRACAO, + DIR_REPO, + NOME_BANCO_LEGADO, + PYTZ_TIMEZONE, + SIGLA_CASA, +) +from sapl.materia.models import ( + AcompanhamentoMateria, + DocumentoAcessorio, + MateriaLegislativa, + Proposicao, + StatusTramitacao, + TipoDocumento, + TipoMateriaLegislativa, + TipoProposicao, + Tramitacao, +) +from sapl.norma.models import ( + AssuntoNorma, + NormaJuridica, + NormaRelacionada, + TipoVinculoNormaJuridica, +) +from sapl.parlamentares.models import ( + Legislatura, + Mandato, + Parlamentar, + Partido, + TipoAfastamento, +) +from sapl.protocoloadm.models import ( + DocumentoAdministrativo, + Protocolo, + StatusTramitacaoAdministrativo, +) +from sapl.sessao.models import ( + ExpedienteMateria, + ExpedienteSessao, + OrdemDia, + RegistroVotacao, + TipoResultadoVotacao, +) from sapl.utils import normalize from .scripts.normaliza_dump_mysql import normaliza_dump_mysql @@ -77,9 +104,7 @@ one_to_one_constraints = [] primeira_vez = [] # apps quase não têm interseção -name_sets = [ - (ac.label, set(m.__name__ for m in ac.get_models())) for ac in appconfs -] +name_sets = [(ac.label, set(m.__name__ for m in ac.get_models())) for ac in appconfs] for a1, s1 in name_sets: for a2, s2 in name_sets: if a1 is not a2: @@ -144,9 +169,7 @@ for nome_novo, nome_antigo in ( ("comissao", "cod_comissao"), ("periodo", "cod_periodo_comp"), ): - campos_novos_para_antigos[ - Composicao._meta.get_field(nome_novo) - ] = nome_antigo + campos_novos_para_antigos[Composicao._meta.get_field(nome_novo)] = nome_antigo # campos virtuais de Proposicao para funcionar com get_fk_related @@ -214,9 +237,7 @@ def get_pk_legado(tabela): # cod_parlamentar, cod_periodo_comp, cod_cargo # mas essa parece sempre ser uma chave candidata return "cod_parlamentar", "cod_sessao_leg", "cod_cargo" - res = exec_legado( - 'show index from {} WHERE Key_name = "PRIMARY"'.format(tabela) - ) + res = exec_legado('show index from {} WHERE Key_name = "PRIMARY"'.format(tabela)) return [r[4] for r in res] @@ -243,9 +264,7 @@ class ForeignKeyFaltando(ObjectDoesNotExist): self.valor = valor self.old = old - msg = ( - "FK não encontrada para [{campo} = {valor}] (em {tabela} / pk = {pk})" - ) # noqa + msg = "FK não encontrada para [{campo} = {valor}] (em {tabela} / pk = {pk})" # noqa @property def dados(self): @@ -255,10 +274,7 @@ class ForeignKeyFaltando(ObjectDoesNotExist): sql = "select * from {} where {};".format( tabela, " and ".join( - [ - "{} = {}".format(k, com_aspas_se_necessario(v)) - for k, v in pk.items() - ] + ["{} = {}".format(k, com_aspas_se_necessario(v)) for k, v in pk.items()] ), ) return OrderedDict( @@ -460,9 +476,7 @@ def unifica_autores_repetidos_no_legado(campo_agregador): # usamos uma tupla neutra se o conjunto é vazio # p q a query seja sintaticamente correta - ids_ja_migrados = formatar_lista_para_sql( - get_all_ids_from_model(Autor) or [-1000] - ) + ids_ja_migrados = formatar_lista_para_sql(get_all_ids_from_model(Autor) or [-1000]) # enumeramos a repeticoes segundo o campo relevante # (p. ex. cod_parlamentar ou cod_comissao) @@ -533,9 +547,7 @@ def unifica_autores_repetidos_no_legado(campo_agregador): # Finalmente excluimos os autores redundantes, # cujas referências foram todas substituídas a essa altura - exec_legado_em_subconjunto( - "delete from autor where cod_autor in {}", apagar - ) + exec_legado_em_subconjunto("delete from autor where cod_autor in {}", apagar) def anula_tipos_origem_externa_invalidos(): @@ -599,9 +611,7 @@ def checa_registros_votacao_ambiguos_e_remove_nao_usados(): # exclui registros não usados (zumbis) todos = set( - primeira_coluna( - exec_legado("select cod_votacao from registro_votacao") - ) + primeira_coluna(exec_legado("select cod_votacao from registro_votacao")) ) nao_usados = todos - ordem.union(expediente) exec_legado_em_subconjunto( @@ -802,8 +812,7 @@ def uniformiza_banco(primeira_migracao): garante_coluna_no_legado("proposicao", "num_proposicao int(11) NULL") garante_coluna_no_legado( - "tipo_materia_legislativa", - "ind_num_automatica BOOLEAN NULL DEFAULT FALSE", + "tipo_materia_legislativa", "ind_num_automatica BOOLEAN NULL DEFAULT FALSE", ) garante_coluna_no_legado( @@ -814,9 +823,7 @@ def uniformiza_banco(primeira_migracao): # Cria campos cod_presenca_sessao (sendo a nova PK da tabela) # e dat_sessao em sessao_plenaria_presenca - if not existe_coluna_no_legado( - "sessao_plenaria_presenca", "cod_presenca_sessao" - ): + if not existe_coluna_no_legado("sessao_plenaria_presenca", "cod_presenca_sessao"): exec_legado( """ ALTER TABLE sessao_plenaria_presenca @@ -828,9 +835,7 @@ def uniformiza_banco(primeira_migracao): "sessao_plenaria_presenca", "cod_presenca_sessao" ) - garante_coluna_no_legado( - "sessao_plenaria_presenca", "dat_sessao DATE NULL" - ) + garante_coluna_no_legado("sessao_plenaria_presenca", "dat_sessao DATE NULL") garante_tabela_no_legado( """ @@ -936,11 +941,7 @@ def iter_sql_records(tabela): def fill_vinculo_norma_juridica(): lista = [ ("A", "Altera o(a)", "Alterado(a) pelo(a)"), - ( - "R", - "Revoga integralmente o(a)", - "Revogado(a) integralmente pelo(a)", - ), + ("R", "Revoga integralmente o(a)", "Revogado(a) integralmente pelo(a)",), ("P", "Revoga parcialmente o(a)", "Revogado(a) parcialmente pelo(a)"), ( "T", @@ -952,16 +953,8 @@ def fill_vinculo_norma_juridica(): ("E", "Reedita o(a)", "Reeditada pelo(a)"), ("I", "Reedita com alteração o(a)", "Reeditada com alteração pelo(a)"), ("G", "Regulamenta o(a)", "Regulamentada pelo(a)"), - ( - "K", - "Suspende parcialmente o(a)", - "Suspenso(a) parcialmente pelo(a)", - ), - ( - "L", - "Suspende integralmente o(a)", - "Suspenso(a) integralmente pelo(a)", - ), + ("K", "Suspende parcialmente o(a)", "Suspenso(a) parcialmente pelo(a)",), + ("L", "Suspende integralmente o(a)", "Suspenso(a) integralmente pelo(a)",), ( "N", "Julga integralmente inconstitucional", @@ -1077,9 +1070,7 @@ def roda_comando_shell(cmd): def get_arquivos_ajustes_pre_migracao(): return [ - DIR_DADOS_MIGRACAO.child( - "ajustes_pre_migracao", f"{SIGLA_CASA}.{sufixo}" - ) + DIR_DADOS_MIGRACAO.child("ajustes_pre_migracao", f"{SIGLA_CASA}.{sufixo}") for sufixo in ("sql", "reverter.yaml") ] @@ -1110,9 +1101,7 @@ def migrar_dados(primeira_migracao=False, apagar_do_legado=False): # restaura dump arq_dump = Path( - DIR_DADOS_MIGRACAO.child( - "dumps_mysql", "{}.sql".format(NOME_BANCO_LEGADO) - ) + DIR_DADOS_MIGRACAO.child("dumps_mysql", "{}.sql".format(NOME_BANCO_LEGADO)) ) assert arq_dump.exists(), "Dump do mysql faltando: {}".format(arq_dump) info("Restaurando dump mysql de [{}]".format(arq_dump)) @@ -1124,9 +1113,7 @@ def migrar_dados(primeira_migracao=False, apagar_do_legado=False): exec_legado('SET SESSION sql_mode = "NO_AUTO_VALUE_ON_ZERO";') # executa ajustes pré-migração, se existirem - arq_ajustes_sql, arq_ajustes_reverter = ( - get_arquivos_ajustes_pre_migracao() - ) + arq_ajustes_sql, arq_ajustes_reverter = get_arquivos_ajustes_pre_migracao() if arq_ajustes_sql.exists(): exec_legado(arq_ajustes_sql.read_file()) if arq_ajustes_reverter.exists(): @@ -1186,13 +1173,9 @@ def get_models_a_migrar(): # a migração de TipoProposicao precisa ser feita # após TipoMateriaLegislativa e TipoDocumento # (porém antes de Proposicao) - move_para_depois_de( - models, TipoProposicao, [TipoMateriaLegislativa, TipoDocumento] - ) + move_para_depois_de(models, TipoProposicao, [TipoMateriaLegislativa, TipoDocumento]) assert models.index(TipoProposicao) < models.index(Proposicao) - move_para_depois_de( - models, Proposicao, [MateriaLegislativa, DocumentoAcessorio] - ) + move_para_depois_de(models, Proposicao, [MateriaLegislativa, DocumentoAcessorio]) return models @@ -1270,12 +1253,9 @@ def migrar_model(model, apagar_do_legado): ] def ja_esta_migrado(old): - chave = { - campos_velhos_p_novos[c]: getattr(old, c) for c in campos_chave - } + chave = {campos_velhos_p_novos[c]: getattr(old, c) for c in campos_chave} return ( - chave in apagados_pelo_usuario - or model.objects.filter(**chave).exists() + chave in apagados_pelo_usuario or model.objects.filter(**chave).exists() ) ultima_pk_legado = model_legado.objects.count() @@ -1423,11 +1403,7 @@ Colocamos então o número de protocolo no campo "número externo". warn( "protocolo_faltando", msg, - { - "numero": numero, - "cod_documento": old.cod_documento, - "nota": nota, - }, + {"numero": numero, "cod_documento": old.cod_documento, "nota": nota,}, ) new.observacao += ("\n\n" if new.observacao else "") + nota @@ -1503,9 +1479,7 @@ def adjust_participacao(new, old): def adjust_normarelacionada(new, old): - new.tipo_vinculo = TipoVinculoNormaJuridica.objects.get( - sigla=old.tip_vinculo - ) + new.tipo_vinculo = TipoVinculoNormaJuridica.objects.get(sigla=old.tip_vinculo) def adjust_protocolo_antes_salvar(new, old): @@ -1535,9 +1509,7 @@ def get_como_resolver_registro_votacao_ambiguo(): def adjust_registrovotacao_antes_salvar(new, old): - ordem_dia = OrdemDia.objects.filter( - pk=old.cod_ordem, materia=old.cod_materia - ) + ordem_dia = OrdemDia.objects.filter(pk=old.cod_ordem, materia=old.cod_materia) expediente_materia = ExpedienteMateria.objects.filter( pk=old.cod_ordem, materia=old.cod_materia ) @@ -1696,9 +1668,7 @@ def adjust_autor(new, old): with reversion.create_revision(): user.save() reversion.set_comment( - "Usuário criado pela migração para o autor {}".format( - old.cod_autor - ) + "Usuário criado pela migração para o autor {}".format(old.cod_autor) ) grupo_autor = Group.objects.get(name="Autor") user.groups.add(grupo_autor) @@ -1890,8 +1860,7 @@ def get_apagados_que_geram_ocorrencias_fk(fks_faltando): return tabela_legado tabela_legado_p_model = { - get_tabela_legado_do_model(model): model - for model in get_models_a_migrar() + get_tabela_legado_do_model(model): model for model in get_models_a_migrar() } apagados = set() @@ -1909,15 +1878,13 @@ def get_apagados_que_geram_ocorrencias_fk(fks_faltando): ind_mat_ou_doc ].related_model else: - nome_campo_fk = { - v: k for k, v in field_renames[model_dependente].items() - }[fk["campo"]] + 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( - model_relacionado - ) + _, tabela_relacionada, [campo_pk] = get_estrutura_legado(model_relacionado) deleted = Version.objects.get_deleted(model_relacionado) versions = deleted.filter(object_id=fk["valor"]) if versions: @@ -1981,8 +1948,7 @@ def get_conflitos_materias_legado_e_producao(): ) materias_legado = {(t, n, a): id for id, t, n, a in res} materias_producao = { - (m.tipo_id, m.numero, m.ano): m.id - for m in MateriaLegislativa.objects.all() + (m.tipo_id, m.numero, m.ano): m.id for m in MateriaLegislativa.objects.all() } comuns = set(materias_legado) & set(materias_producao) comuns = {k: (materias_legado[k], materias_producao[k]) for k in comuns}