diff --git a/sapl/legacy/scripts/ressucita_dependencias.py b/sapl/legacy/scripts/ressucita_dependencias.py index 793e51483..2005fe588 100644 --- a/sapl/legacy/scripts/ressucita_dependencias.py +++ b/sapl/legacy/scripts/ressucita_dependencias.py @@ -19,6 +19,11 @@ fks_legado = ''' registro_votacao_parlamentar cod_votacao registro_votacao sessao_legislativa num_legislatura legislatura sessao_plenaria_presenca cod_parlamentar parlamentar + composicao_comissao cod_cargo cargo_comissao + sessao_plenaria cod_sessao_leg sessao_legislativa + ordem_dia cod_sessao_plen sessao_plenaria + proposicao cod_materia materia_legislativa + proposicao cod_autor autor ''' fks_legado = [l.split() for l in fks_legado.strip().splitlines()] fks_legado = {(o, c): t for (o, c, t) in fks_legado} @@ -36,8 +41,8 @@ def get_excluido(fk): def get_dependencias_a_ressucitar(): ocorrencias = yaml.load( Path(DIR_REPO.child('ocorrencias.yaml').read_file())) - fks = ocorrencias['fk'] - excluidos = [get_excluido(fk) for fk in fks] + fks_faltando = ocorrencias['fk'] + excluidos = [get_excluido(fk) for fk in fks_faltando] desexcluir, criar = [ set([(tabela_alvo, campo, valor) for tabela_origem, campo, valor, tabela_alvo, res in excluidos @@ -51,9 +56,65 @@ def get_dependencias_a_ressucitar(): return desexcluir, criar +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) + values (0, "DESC", "DESCONHECIDO", 0, 0, 0); + + insert into tipo_proposicao ( + tip_proposicao, des_tipo_proposicao, ind_mat_ou_doc, tip_mat_ou_doc, + nom_modelo, ind_excluido) + values ({}, "DESCONHECIDO", "M", 0, "DESCONHECIDO", 0); +''', +} + + +def criar_sessao_legislativa(campo, valor): + assert campo == 'cod_sessao_leg' + [(num_legislatura,)] = exec_legado( + 'select min(num_legislatura) from legislatura where ind_excluido <> 1') + return ''' +insert into sessao_legislativa ( + cod_sessao_leg, num_legislatura, num_sessao_leg, tip_sessao_leg, + dat_inicio, dat_fim, dat_inicio_intervalo, dat_fim_intervalo, +ind_excluido) values ({}, {}, 0, "O", + "1900-01-01", "1900-01-02", "1900-01-01", "1900-01-02", 0); + '''.format(valor, num_legislatura) + + +def get_sql_desexcluir(tabela_alvo, campo, valor): + return 'update {} set ind_excluido = 0 where {} = {};'.format( + tabela_alvo, campo, valor) + + +def get_sql_criar(tabela_alvo, campo, valor): + if tabela_alvo == 'sessao_legislativa': + return criar_sessao_legislativa(campo, valor) + else: + sql = SQLS_CRIACAO[tabela_alvo] + return sql.format(valor) + + +TEMPLATE_RESSUCITADOS = ''' +/* RESSUCITADOS * / + +{} +''' + + def get_sqls_desexcluir_criar(desexcluir, criar): - sqls_desexcluir = [ - 'update {} set ind_excluido = 0 where {} = {};'.format( - tabela_alvo, campo, valor) - for tabela_alvo, campo, valor in desexcluir] - return '\n'.join(sqls_desexcluir) + sqls = [get_sql(tabela_alvo, campo, valor) + for conjunto, get_sql in ((desexcluir, get_sql_desexcluir), + (criar, get_sql_criar)) + for tabela_alvo, campo, valor in conjunto] + if not sqls: + return '' + else: + return TEMPLATE_RESSUCITADOS.format('\n'.join(sorted(sqls))) + + +def print_ressucitar(): + desexcluir, criar = get_dependencias_a_ressucitar() + print(get_sqls_desexcluir_criar(desexcluir, criar))