diff --git a/sapl/legacy/scripts/ressucita_dependencias.py b/sapl/legacy/scripts/ressucita_dependencias.py index 2005fe588..758f1cf1b 100644 --- a/sapl/legacy/scripts/ressucita_dependencias.py +++ b/sapl/legacy/scripts/ressucita_dependencias.py @@ -1,3 +1,5 @@ +from textwrap import dedent + import yaml from unipath import Path @@ -24,14 +26,36 @@ fks_legado = ''' ordem_dia cod_sessao_plen sessao_plenaria proposicao cod_materia materia_legislativa proposicao cod_autor autor + tramitacao cod_status status_tramitacao + expediente_sessao_plenaria cod_expediente tipo_expediente + proposicao tip_proposicao tipo_proposicao ''' fks_legado = [l.split() for l in fks_legado.strip().splitlines()] fks_legado = {(o, c): t for (o, c, t) in fks_legado} +def get_tabela_campo_valor_proposicao(fk): + [(ind_mat_ou_doc, tip_mat_ou_doc)] = exec_legado(''' + select ind_mat_ou_doc, tip_mat_ou_doc + from tipo_proposicao where tip_proposicao = {} + '''.format(fk['pk']['tip_proposicao'])) + if ind_mat_ou_doc == 'M': + return 'tipo_materia_legislativa', 'tip_materia', tip_mat_ou_doc + elif ind_mat_ou_doc == 'D': + return 'tipo_materia_legislativa', 'tip_documento', tip_mat_ou_doc + else: + raise(Exception('ind_mat_ou_doc inválido')) + + def get_excluido(fk): - campo, valor, tabela_origem = [fk[k] for k in ('campo', 'valor', 'tabela')] - tabela_alvo = fks_legado[(tabela_origem, campo)] + tabela_origem = fk['tabela'] + + if tabela_origem == 'tipo_proposicao': + tabela_alvo, campo, valor = get_tabela_campo_valor_proposicao(fk) + else: + campo, valor = [fk[k] for k in ('campo', 'valor')] + tabela_alvo = fks_legado[(tabela_origem, campo)] + sql = 'select ind_excluido, t.* from {} t where {} = {}'.format( tabela_alvo, campo, valor) res = list(exec_legado(sql)) @@ -56,8 +80,8 @@ def get_dependencias_a_ressucitar(): return desexcluir, criar -SQLS_CRIACAO = { - 'tipo_proposicao': ''' +SQLS_CRIACAO = [ + ('tipo_proposicao', ''' insert into tipo_materia_legislativa ( tip_materia, sgl_tipo_materia, des_tipo_materia, ind_num_automatica, quorum_minimo_votacao, ind_excluido) @@ -67,8 +91,16 @@ SQLS_CRIACAO = { tip_proposicao, des_tipo_proposicao, ind_mat_ou_doc, tip_mat_ou_doc, nom_modelo, ind_excluido) values ({}, "DESCONHECIDO", "M", 0, "DESCONHECIDO", 0); -''', -} + ''', + ), + ('tipo_resultado_votacao', ''' + insert into tipo_resultado_votacao ( + tip_resultado_votacao, nom_resultado, ind_excluido) + values ({}, "DESCONHECIDO", 0); + ''' + ), +] +SQLS_CRIACAO = {k: dedent(v.strip()) for k, v in SQLS_CRIACAO} def criar_sessao_legislativa(campo, valor): @@ -98,7 +130,7 @@ def get_sql_criar(tabela_alvo, campo, valor): TEMPLATE_RESSUCITADOS = ''' -/* RESSUCITADOS * / +/* RESSUCITADOS */ {} '''