From 13071caea50bb416402b2afd811270b20690dc26 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Thu, 4 Oct 2018 11:50:32 -0300 Subject: [PATCH 1/7] Corrige palavra --- .../{ressucitar_deps.py => ressuscitar_deps.py} | 6 +++--- ...ependencias.py => ressuscita_dependencias.py} | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) rename sapl/legacy/management/commands/{ressucitar_deps.py => ressuscitar_deps.py} (54%) rename sapl/legacy/scripts/{ressucita_dependencias.py => ressuscita_dependencias.py} (97%) diff --git a/sapl/legacy/management/commands/ressucitar_deps.py b/sapl/legacy/management/commands/ressuscitar_deps.py similarity index 54% rename from sapl/legacy/management/commands/ressucitar_deps.py rename to sapl/legacy/management/commands/ressuscitar_deps.py index 70900e887..ea219330c 100644 --- a/sapl/legacy/management/commands/ressucitar_deps.py +++ b/sapl/legacy/management/commands/ressuscitar_deps.py @@ -1,12 +1,12 @@ from django.core.management.base import BaseCommand -from sapl.legacy.scripts.ressucita_dependencias import adiciona_ressucitar +from sapl.legacy.scripts.ressuscita_dependencias import adiciona_ressuscitar class Command(BaseCommand): - help = 'Ressucita dependências apagadas ' \ + help = 'Ressuscita dependências apagadas ' \ 'que são necessárias para migrar outros registros' def handle(self, *args, **options): - adiciona_ressucitar() + adiciona_ressuscitar() diff --git a/sapl/legacy/scripts/ressucita_dependencias.py b/sapl/legacy/scripts/ressuscita_dependencias.py similarity index 97% rename from sapl/legacy/scripts/ressucita_dependencias.py rename to sapl/legacy/scripts/ressuscita_dependencias.py index 9810924a9..ebde7c73a 100644 --- a/sapl/legacy/scripts/ressucita_dependencias.py +++ b/sapl/legacy/scripts/ressuscita_dependencias.py @@ -194,7 +194,7 @@ Para facilitar sua conferência, seguem os links para as proposições envolvida '''.format(table.draw(), links, sqls) -def get_dependencias_a_ressucitar(slug): +def get_dependencias_a_ressuscitar(slug): ocorrencias = yaml.load( Path(DIR_REPO.child('ocorrencias.yaml').read_file())) fks_faltando = ocorrencias.get('fk') @@ -349,8 +349,8 @@ def get_sql_criar(tabela_alvo, campo, valor, slug): return sql, links -TEMPLATE_RESSUCITADOS = '''{} -/* RESSUCITADOS +TEMPLATE_RESSUSCITADOS = '''{} +/* RESSUSCITADOS SOBRE REGISTROS QUE ESTAVAM APAGADOS E FORAM RESTAURADOS @@ -397,11 +397,11 @@ def get_sqls_desexcluir_criar(preambulo, desexcluir, criar, slug): links = sem_repeticoes_mantendo_ordem(links) sqls, links = ['\n'.join(sorted(s)) for s in [sqls, links]] - return TEMPLATE_RESSUCITADOS.format(preambulo, links, sqls) + return TEMPLATE_RESSUSCITADOS.format(preambulo, links, sqls) -def get_ressucitar(slug): - preambulo, desexcluir, criar = get_dependencias_a_ressucitar(slug) +def get_ressuscitar(slug): + preambulo, desexcluir, criar = get_dependencias_a_ressuscitar(slug) return get_sqls_desexcluir_criar(preambulo, desexcluir, criar, slug) @@ -413,8 +413,8 @@ def get_slug(): return siglas_para_slugs[sigla] -def adiciona_ressucitar(): - sqls = get_ressucitar(get_slug()) +def adiciona_ressuscitar(): + sqls = get_ressuscitar(get_slug()) if sqls.strip(): arq_ajustes_pre_migracao = get_arquivo_ajustes_pre_migracao() conteudo = arq_ajustes_pre_migracao.read_file() From 248683b5a543f3ed31d3af1571d8db15ac93e157 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Fri, 5 Oct 2018 09:06:41 -0300 Subject: [PATCH 2/7] Apaga destino antes de mover documento ao migrar --- sapl/legacy/migracao_documentos.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sapl/legacy/migracao_documentos.py b/sapl/legacy/migracao_documentos.py index 66ada19fc..2c9e00842 100644 --- a/sapl/legacy/migracao_documentos.py +++ b/sapl/legacy/migracao_documentos.py @@ -1,4 +1,5 @@ import os +import shutil import re from glob import glob from os.path import join @@ -52,6 +53,12 @@ def mover_documento(repo, origem, destino, ignora_origem_ausente=False): if ignora_origem_ausente and not os.path.exists(origem): print('Origem ignorada ao mover documento: {}'.format(origem)) return + # apaga destino, se houver, e renomeia origem para destino + if os.path.exists(destino): + if os.path.isdir(destino): + shutil.rmtree(destino) + else: + os.remove(destino) os.makedirs(os.path.dirname(destino), exist_ok=True) os.rename(origem, destino) From 419b6d18dc36ce599913e969b1b2f86dc578b4d5 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Fri, 5 Oct 2018 11:31:47 -0300 Subject: [PATCH 3/7] Corrige insert de ressuscitar --- sapl/legacy/scripts/ressuscita_dependencias.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sapl/legacy/scripts/ressuscita_dependencias.py b/sapl/legacy/scripts/ressuscita_dependencias.py index ebde7c73a..19cb875d8 100644 --- a/sapl/legacy/scripts/ressuscita_dependencias.py +++ b/sapl/legacy/scripts/ressuscita_dependencias.py @@ -1,16 +1,16 @@ from collections import OrderedDict from textwrap import dedent -import texttable import yaml -from unipath import Path +import texttable from sapl.legacy.migracao_dados import (PROPAGACOES_DE_EXCLUSAO, campos_novos_para_antigos, exec_legado, get_arquivo_ajustes_pre_migracao, models_novos_para_antigos) from sapl.legacy_migration_settings import (DIR_DADOS_MIGRACAO, DIR_REPO, NOME_BANCO_LEGADO) +from unipath import Path def stripsplit(ll): @@ -265,7 +265,7 @@ SQLS_CRIACAO = [ ('unidade_tramitacao', ''' insert into unidade_tramitacao ( cod_unid_tramitacao, cod_comissao, cod_orgao, cod_parlamentar, ind_excluido) - values ({}, NULL, NULL, NULL, 0); + values ({}, NULL, NULL, 0, 0); '''), ('autor', SQL_INSERT_TIPO_AUTOR.format(0) + ''' insert into autor ( From e49eb8fab82747a564fecfe6360526c9da070f16 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Fri, 5 Oct 2018 11:32:21 -0300 Subject: [PATCH 4/7] =?UTF-8?q?Apaga=20refs=20a=20mats=20e=20docs=20inexis?= =?UTF-8?q?tentes=20em=20proposi=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/legacy/migracao_dados.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/sapl/legacy/migracao_dados.py b/sapl/legacy/migracao_dados.py index 1be1f6e96..1def7f9c3 100644 --- a/sapl/legacy/migracao_dados.py +++ b/sapl/legacy/migracao_dados.py @@ -623,6 +623,36 @@ def corrige_unidades_tramitacao_destino_vazia_como_anterior(): '''.format(tabela_tramitacao)) +def apaga_ref_a_mats_e_docs_inexistentes_em_proposicoes(): + # as referencias a matérias e documentos apagados não aparecem no 3.1 + # além do que, se ressuscitássemos essas matérias e docs, + # não seria possível apagá-los, + # pois é impossível para um usuário não autor acessar as proposicões + # para apagar a referências antes + exec_legado(''' + update proposicao set cod_materia = NULL where cod_materia not in ( + select cod_materia from materia_legislativa + where ind_excluido <> 1); + ''') + props_sem_mats = list(primeira_coluna(exec_legado(''' + select cod_proposicao from proposicao p inner join tipo_proposicao t + on p.tip_proposicao = t.tip_proposicao + where t.ind_mat_ou_doc = 'M' and cod_mat_ou_doc not in ( + select cod_materia from materia_legislativa + where ind_excluido <> 1) + '''))) + props_sem_docs = list(primeira_coluna(exec_legado(''' + select cod_proposicao from proposicao p inner join tipo_proposicao t + on p.tip_proposicao = t.tip_proposicao + where t.ind_mat_ou_doc = 'D' and cod_mat_ou_doc not in ( + select cod_documento from documento_acessorio + where ind_excluido <> 1); + '''))) + exec_legado_em_subconjunto(''' + update proposicao set cod_mat_ou_doc = NULL + where cod_proposicao in {}''', props_sem_mats + props_sem_docs) + + def uniformiza_banco(): propaga_exclusoes(PROPAGACOES_DE_EXCLUSAO) checa_registros_votacao_ambiguos_e_remove_nao_usados() @@ -722,6 +752,8 @@ sessao_plenaria_presenca | dat_sessao = NULL | dat_sessao = 0 select cod_materia from materia_legislativa where ind_excluido <> 1);''') + apaga_ref_a_mats_e_docs_inexistentes_em_proposicoes() + class Record: pass From 660810b7a4ca5a87e95fd3b32a29b9eeb06490e7 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Wed, 10 Oct 2018 18:45:44 -0300 Subject: [PATCH 5/7] =?UTF-8?q?Adiciona=20url=20p=20tipo=20de=20situa?= =?UTF-8?q?=C3=A7=C3=A3o=20militar=20ao=20ressuscitar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/legacy/scripts/ressuscita_dependencias.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sapl/legacy/scripts/ressuscita_dependencias.py b/sapl/legacy/scripts/ressuscita_dependencias.py index 19cb875d8..32b7986d7 100644 --- a/sapl/legacy/scripts/ressuscita_dependencias.py +++ b/sapl/legacy/scripts/ressuscita_dependencias.py @@ -1,16 +1,16 @@ from collections import OrderedDict from textwrap import dedent +import texttable import yaml +from unipath import Path -import texttable from sapl.legacy.migracao_dados import (PROPAGACOES_DE_EXCLUSAO, campos_novos_para_antigos, exec_legado, get_arquivo_ajustes_pre_migracao, models_novos_para_antigos) from sapl.legacy_migration_settings import (DIR_DADOS_MIGRACAO, DIR_REPO, NOME_BANCO_LEGADO) -from unipath import Path def stripsplit(ll): @@ -70,6 +70,7 @@ tipo_dependente /sistema/parlamentar/tipo-dependente origem /sistema/materia/origem documento_acessorio /materia/documentoacessorio tipo_fim_relatoria /sistema/materia/tipo-fim-relatoria +tipo_situacao_militar /sistema/parlamentar/tipo-militar ''' urls = dict(stripsplit(urls)) From 6a6f98dbb44c87271dc3778c1fe88bda1c225e86 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Wed, 10 Oct 2018 18:46:08 -0300 Subject: [PATCH 6/7] =?UTF-8?q?Melhora=20feedback=20ao=20fazer=20scraping?= =?UTF-8?q?=20de=20proposi=C3=A7=C3=A3o=20sde?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/legacy/migracao.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sapl/legacy/migracao.py b/sapl/legacy/migracao.py index c4c183b84..94fd25930 100644 --- a/sapl/legacy/migracao.py +++ b/sapl/legacy/migracao.py @@ -70,12 +70,13 @@ def scrap_sde(url, usuario, senha=None): {'__ac_name': usuario, '__ac_password': senha}) assert res.status_code == 200 - url_proposicao = '{}/sapl_documentos/proposicao/{}/renderXML?xsl=__default__' # noqa + url_proposicao_tmpl = '{}/sapl_documentos/proposicao/{}/renderXML?xsl=__default__' # noqa total = Proposicao.objects.count() for num, proposicao in enumerate(Proposicao.objects.all()): pk = proposicao.pk - res = session.get(url_proposicao.format(url, pk)) - print("pk: {} status: {} (progresso: {:.2%})".format( - pk, res.status_code, num / total)) + url_proposicao = url_proposicao_tmpl.format(url, pk) + res = session.get(url_proposicao) + print("pk: {} status: {} {} (progresso: {:.2%})".format( + pk, res.status_code, url_proposicao, num / total)) if res.status_code == 200: salva_conteudo_do_sde(proposicao, res.content) From 9ade9c230201fd009dff6822f8b97a9093b76f48 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Wed, 10 Oct 2018 19:23:45 -0300 Subject: [PATCH 7/7] Adiciona insert a ressuscitar --- sapl/legacy/scripts/ressuscita_dependencias.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sapl/legacy/scripts/ressuscita_dependencias.py b/sapl/legacy/scripts/ressuscita_dependencias.py index 32b7986d7..5e12efc01 100644 --- a/sapl/legacy/scripts/ressuscita_dependencias.py +++ b/sapl/legacy/scripts/ressuscita_dependencias.py @@ -308,6 +308,9 @@ SQLS_CRIACAO = [ insert into parlamentar (cod_parlamentar, nom_completo, nom_parlamentar, sex_parlamentar, cod_casa, ind_ativo, ind_unid_deliberativa, ind_excluido) values ({}, "DESCONHECIDO", "DESCONHECIDO", "M", 0, 0, 0, 0); '''), + ('tipo_sessao_plenaria', ''' + insert into tipo_sessao_plenaria (tip_sessao, nom_sessao, ind_excluido, num_minimo) values ({}, "DESCONHECIDO", 0, 0); + '''), ] SQLS_CRIACAO = {k: (dedent(sql.strip()), extras) for k, sql, *extras in SQLS_CRIACAO}