Browse Source

Estende ressucitar deps

pull/2188/head
Marcio Mazza 7 years ago
parent
commit
5b435d4e48
  1. 93
      sapl/legacy/scripts/ressucita_dependencias.py

93
sapl/legacy/scripts/ressucita_dependencias.py

@ -36,40 +36,52 @@ fks_legado = '''
proposicao tip_proposicao tipo_proposicao proposicao tip_proposicao tipo_proposicao
tramitacao cod_unid_tram_dest unidade_tramitacao tramitacao cod_unid_tram_dest unidade_tramitacao
tramitacao cod_unid_tram_local unidade_tramitacao tramitacao cod_unid_tram_local unidade_tramitacao
documento_acessorio tip_documento tipo_documento
relatoria cod_parlamentar parlamentar
relatoria cod_materia materia_legislativa
unidade_tramitacao cod_orgao orgao
norma_juridica cod_materia materia_legislativa
sessao_plenaria tip_sessao tipo_sessao_plenaria
mesa_sessao_plenaria cod_cargo cargo_mesa
''' '''
fks_legado = stripsplit(fks_legado) fks_legado = stripsplit(fks_legado)
fks_legado = {(o, c): t for (o, c, t) in fks_legado} fks_legado = {(o, c): t for (o, c, t) in fks_legado}
urls = ''' urls = '''
autor /sistema/autor autor /sistema/autor
cargo_comissao /sistema/comissao/cargo cargo_comissao /sistema/comissao/cargo
legislatura /sistema/parlamentar/legislatura legislatura /sistema/parlamentar/legislatura
materia_legislativa /materia materia_legislativa /materia
norma_juridica /norma norma_juridica /norma
parlamentar /parlamentar parlamentar /parlamentar
sessao_legislativa /sistema/mesa-diretora/sessao-legislativa sessao_legislativa /sistema/mesa-diretora/sessao-legislativa
sessao_plenaria /sessao sessao_plenaria /sessao
status_tramitacao /sistema/materia/status-tramitacao status_tramitacao /sistema/materia/status-tramitacao
tipo_autor /sistema/autor/tipo tipo_autor /sistema/autor/tipo
tipo_expediente /sistema/sessao-plenaria/tipo-expediente tipo_expediente /sistema/sessao-plenaria/tipo-expediente
tipo_proposicao /sistema/proposicao/tipo tipo_proposicao /sistema/proposicao/tipo
tipo_resultado_votacao /sistema/sessao-plenaria/tipo-resultado-votacao tipo_resultado_votacao /sistema/sessao-plenaria/tipo-resultado-votacao
unidade_tramitacao /sistema/materia/unidade-tramitacao unidade_tramitacao /sistema/materia/unidade-tramitacao
registro_votacao ????????? tipo_documento /sistema/materia/tipo-documento
orgao /sistema/materia/orgao
tipo_sessao_plenaria /sistema/sessao-plenaria/tipo
cargo_mesa /sistema/mesa-diretora/cargo-mesa
documento_administrativo /docadm
tipo_materia_legislativa /sistema/materia/tipo
registro_votacao ?????????
''' '''
urls = dict(stripsplit(urls)) urls = dict(stripsplit(urls))
def get_tabela_campo_valor_proposicao(fk): def get_tabela_campo_tipo_proposicao(tip_proposicao):
[(ind_mat_ou_doc, tip_mat_ou_doc)] = exec_legado(''' [(ind_mat_ou_doc,)] = exec_legado('''
select ind_mat_ou_doc, tip_mat_ou_doc select ind_mat_ou_doc from tipo_proposicao where tip_proposicao = {};
from tipo_proposicao where tip_proposicao = {} '''.format(tip_proposicao))
'''.format(fk['pk']['tip_proposicao']))
if ind_mat_ou_doc == 'M': if ind_mat_ou_doc == 'M':
return 'tipo_materia_legislativa', 'tip_materia', tip_mat_ou_doc return 'tipo_materia_legislativa', 'tip_materia'
elif ind_mat_ou_doc == 'D': elif ind_mat_ou_doc == 'D':
return 'tipo_materia_legislativa', 'tip_documento', tip_mat_ou_doc return 'tipo_documento', 'tip_documento'
else: else:
raise(Exception('ind_mat_ou_doc inválido')) raise(Exception('ind_mat_ou_doc inválido'))
@ -81,12 +93,25 @@ CAMPOS_ORIGEM_PARA_ALVO = {
def get_excluido(fk): def get_excluido(fk):
tabela_origem = fk['tabela'] tabela_origem, campo, valor = [fk[k] for k in ('tabela', 'campo', 'valor')]
if tabela_origem == 'tipo_proposicao': if tabela_origem == 'tipo_proposicao':
tabela_alvo, campo, valor = get_tabela_campo_valor_proposicao(fk) tip_proposicao = fk['pk']['tip_proposicao']
tabela_alvo, campo = get_tabela_campo_tipo_proposicao(tip_proposicao)
elif tabela_origem == 'proposicao' and campo == 'cod_mat_ou_doc':
[(ind_mat_ou_doc,)] = exec_legado('''
select ind_mat_ou_doc from
proposicao p inner join tipo_proposicao t
on p.tip_proposicao = t.tip_proposicao
where cod_proposicao = {};
'''.format(fk['pk']['cod_proposicao']))
if ind_mat_ou_doc == 'M':
tabela_alvo, campo = 'materia_legislativa', 'cod_materia'
elif ind_mat_ou_doc == 'D':
tabela_alvo, campo = 'documento_acessorio', 'cod_documento'
else:
raise(Exception('ind_mat_ou_doc inválido'))
else: else:
campo, valor = [fk[k] for k in ('campo', 'valor')]
tabela_alvo = fks_legado[(tabela_origem, campo)] tabela_alvo = fks_legado[(tabela_origem, campo)]
# troca nome de campo pelo correspondente na tabela alvo # troca nome de campo pelo correspondente na tabela alvo
@ -133,11 +158,14 @@ SQLS_CRIACAO = [
insert into tipo_resultado_votacao ( insert into tipo_resultado_votacao (
tip_resultado_votacao, nom_resultado, ind_excluido) tip_resultado_votacao, nom_resultado, ind_excluido)
values ({}, "DESCONHECIDO", 0); values ({}, "DESCONHECIDO", 0);
''', [] '''),
), ('tipo_autor', '''
insert into tipo_autor (tip_autor, des_tipo_autor, ind_excluido)
values ({}, "DESCONHECIDO", 0);
''')
] ]
SQLS_CRIACAO = {k: (dedent(sql.strip()), extras) SQLS_CRIACAO = {k: (dedent(sql.strip()), extras)
for k, sql, extras in SQLS_CRIACAO} for k, sql, *extras in SQLS_CRIACAO}
def criar_sessao_legislativa(campo, valor): def criar_sessao_legislativa(campo, valor):
@ -186,7 +214,7 @@ TEMPLATE_RESSUCITADOS = '''
''' '''
def get_sqls_desexcluir_criar(desexcluir, criar): def get_sqls_desexcluir_criar(desexcluir, criar, slug):
sqls_links = [get_sql(tabela_alvo, campo, valor) sqls_links = [get_sql(tabela_alvo, campo, valor)
for conjunto, get_sql in ((desexcluir, get_sql_desexcluir), for conjunto, get_sql in ((desexcluir, get_sql_desexcluir),
(criar, get_sql_criar)) (criar, get_sql_criar))
@ -194,12 +222,13 @@ def get_sqls_desexcluir_criar(desexcluir, criar):
if not sqls_links: if not sqls_links:
return '' return ''
else: else:
url_base = 'sapl.{}.leg.br'.format(slug.replace('-', '.'))
sqls, links = zip(*sqls_links) sqls, links = zip(*sqls_links)
links = [l for ll in links for l in ll] # flatten links = [url_base + l for ll in links for l in ll] # flatten
sqls, links = ['\n'.join(sorted(s)) for s in [sqls, links]] sqls, links = ['\n'.join(sorted(s)) for s in [sqls, links]]
return TEMPLATE_RESSUCITADOS.format(links, sqls) return TEMPLATE_RESSUCITADOS.format(links, sqls)
def print_ressucitar(): def print_ressucitar(slug):
desexcluir, criar = get_dependencias_a_ressucitar() desexcluir, criar = get_dependencias_a_ressucitar()
print(get_sqls_desexcluir_criar(desexcluir, criar)) print(get_sqls_desexcluir_criar(desexcluir, criar, slug))

Loading…
Cancel
Save