|
|
@ -22,20 +22,24 @@ def _tab_legado(model): |
|
|
|
|
|
|
|
|
|
|
|
fks_legado = { |
|
|
|
(_tab_legado(m), campos_novos_para_antigos[f]): _tab_legado(f.related_model) # noqa |
|
|
|
(_tab_legado(m), campos_novos_para_antigos[f]): _tab_legado( |
|
|
|
f.related_model |
|
|
|
) # noqa |
|
|
|
for m in models_novos_para_antigos |
|
|
|
for f in m._meta.fields |
|
|
|
if f in campos_novos_para_antigos and f.related_model} |
|
|
|
if f in campos_novos_para_antigos and f.related_model |
|
|
|
} |
|
|
|
|
|
|
|
# acrescenta mapeamentos que não existem em campos_novos_para_antigos |
|
|
|
for tabela_origem, campo, tabela_destino in [ |
|
|
|
['autor', 'cod_parlamentar', 'parlamentar'], |
|
|
|
['autor', 'cod_comissao', 'comissao'], |
|
|
|
['autor', 'cod_partido', 'partido']]: |
|
|
|
["autor", "cod_parlamentar", "parlamentar"], |
|
|
|
["autor", "cod_comissao", "comissao"], |
|
|
|
["autor", "cod_partido", "partido"], |
|
|
|
]: |
|
|
|
fks_legado[(tabela_origem, campo)] = tabela_destino |
|
|
|
|
|
|
|
|
|
|
|
urls = ''' |
|
|
|
urls = """ |
|
|
|
autor /sistema/autor |
|
|
|
cargo_comissao /sistema/comissao/cargo |
|
|
|
legislatura /sistema/parlamentar/legislatura |
|
|
@ -71,91 +75,109 @@ 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)) |
|
|
|
|
|
|
|
|
|
|
|
def get_tabela_campo_tipo_proposicao(tip_proposicao): |
|
|
|
[(ind_mat_ou_doc,)] = exec_legado(''' |
|
|
|
[(ind_mat_ou_doc,)] = exec_legado( |
|
|
|
""" |
|
|
|
select ind_mat_ou_doc from tipo_proposicao where tip_proposicao = {}; |
|
|
|
'''.format(tip_proposicao)) |
|
|
|
if ind_mat_ou_doc == 'M': |
|
|
|
return 'tipo_materia_legislativa', 'tip_materia' |
|
|
|
elif ind_mat_ou_doc == 'D': |
|
|
|
return 'tipo_documento', 'tip_documento' |
|
|
|
""".format( |
|
|
|
tip_proposicao |
|
|
|
) |
|
|
|
) |
|
|
|
if ind_mat_ou_doc == "M": |
|
|
|
return "tipo_materia_legislativa", "tip_materia" |
|
|
|
elif ind_mat_ou_doc == "D": |
|
|
|
return "tipo_documento", "tip_documento" |
|
|
|
else: |
|
|
|
raise(Exception('ind_mat_ou_doc inválido')) |
|
|
|
raise (Exception("ind_mat_ou_doc inválido")) |
|
|
|
|
|
|
|
|
|
|
|
CAMPOS_ORIGEM_PARA_ALVO = { |
|
|
|
'cod_unid_tram_dest': 'cod_unid_tramitacao', |
|
|
|
'cod_unid_tram_local': 'cod_unid_tramitacao', |
|
|
|
'tip_id_basica': 'tip_materia', |
|
|
|
'cod_local_origem_externa': 'cod_origem', |
|
|
|
"cod_unid_tram_dest": "cod_unid_tramitacao", |
|
|
|
"cod_unid_tram_local": "cod_unid_tramitacao", |
|
|
|
"tip_id_basica": "tip_materia", |
|
|
|
"cod_local_origem_externa": "cod_origem", |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
def get_excluido(fk): |
|
|
|
tabela_origem, campo, valor = [fk[k] for k in ('tabela', 'campo', 'valor')] |
|
|
|
tabela_origem, campo, valor = [fk[k] for k in ("tabela", "campo", "valor")] |
|
|
|
|
|
|
|
if tabela_origem == 'tipo_proposicao': |
|
|
|
tip_proposicao = fk['pk']['tip_proposicao'] |
|
|
|
if tabela_origem == "tipo_proposicao": |
|
|
|
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(''' |
|
|
|
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' |
|
|
|
""".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')) |
|
|
|
raise (Exception("ind_mat_ou_doc inválido")) |
|
|
|
else: |
|
|
|
tabela_alvo = fks_legado[(tabela_origem, campo)] |
|
|
|
|
|
|
|
# troca nome de campo pelo correspondente na tabela alvo |
|
|
|
campo = CAMPOS_ORIGEM_PARA_ALVO.get(campo, campo) |
|
|
|
|
|
|
|
sql = 'select ind_excluido, t.* from {} t where {} = {}'.format( |
|
|
|
tabela_alvo, campo, valor) |
|
|
|
sql = "select ind_excluido, t.* from {} t where {} = {}".format( |
|
|
|
tabela_alvo, campo, valor |
|
|
|
) |
|
|
|
res = list(exec_legado(sql)) |
|
|
|
return tabela_origem, campo, valor, tabela_alvo, res |
|
|
|
|
|
|
|
|
|
|
|
def get_desc_materia(cod_materia): |
|
|
|
sql = ''' |
|
|
|
sql = """ |
|
|
|
select t.sgl_tipo_materia, t.des_tipo_materia, |
|
|
|
m.num_ident_basica, m.ano_ident_basica |
|
|
|
from materia_legislativa m inner join tipo_materia_legislativa t |
|
|
|
on m.tip_id_basica = t.tip_materia |
|
|
|
where cod_materia = {}; |
|
|
|
'''.format(cod_materia) |
|
|
|
""".format( |
|
|
|
cod_materia |
|
|
|
) |
|
|
|
return list(exec_legado(sql))[0] |
|
|
|
|
|
|
|
|
|
|
|
def get_link_proposicao(cod_proposicao, slug): |
|
|
|
url_base = get_url(slug) |
|
|
|
return 'http://{}/cadastros/proposicao/proposicao_mostrar_proc?cod_proposicao={}'.format( # noqa |
|
|
|
url_base, cod_proposicao) |
|
|
|
return "http://{}/cadastros/proposicao/proposicao_mostrar_proc?cod_proposicao={}".format( # noqa |
|
|
|
url_base, cod_proposicao |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
def get_apaga_materias_de_proposicoes(fks, slug): |
|
|
|
refs_materias = [['id proposicao', 'sigla tipo matéria', |
|
|
|
'tipo matéria', 'número matéria', 'ano matéria']] |
|
|
|
refs_materias = [ |
|
|
|
[ |
|
|
|
"id proposicao", |
|
|
|
"sigla tipo matéria", |
|
|
|
"tipo matéria", |
|
|
|
"número matéria", |
|
|
|
"ano matéria", |
|
|
|
] |
|
|
|
] |
|
|
|
sqls = [] |
|
|
|
cods_proposicoes = [] |
|
|
|
|
|
|
|
for fk in fks: |
|
|
|
cod_proposicao = fk['pk']['cod_proposicao'] |
|
|
|
cod_proposicao = fk["pk"]["cod_proposicao"] |
|
|
|
cods_proposicoes.append(cod_proposicao) |
|
|
|
assert fk['campo'] == 'cod_materia' |
|
|
|
up = 'update proposicao set cod_materia = NULL where cod_proposicao = {};' # noqa |
|
|
|
refs_materias.append( |
|
|
|
[cod_proposicao, *get_desc_materia(fk['valor'])]) |
|
|
|
assert fk["campo"] == "cod_materia" |
|
|
|
up = "update proposicao set cod_materia = NULL where cod_proposicao = {};" # noqa |
|
|
|
refs_materias.append([cod_proposicao, *get_desc_materia(fk["valor"])]) |
|
|
|
sqls.append(up.format(cod_proposicao)) |
|
|
|
|
|
|
|
table = texttable.Texttable() |
|
|
@ -163,13 +185,12 @@ def get_apaga_materias_de_proposicoes(fks, slug): |
|
|
|
table.set_deco(table.VLINES | table.HEADER) |
|
|
|
table.add_rows(refs_materias) |
|
|
|
|
|
|
|
links = '\n'.join([get_link_proposicao(p, slug) |
|
|
|
for p in cods_proposicoes]) |
|
|
|
sqls = '\n'.join(sqls) |
|
|
|
links = "\n".join([get_link_proposicao(p, slug) for p in cods_proposicoes]) |
|
|
|
sqls = "\n".join(sqls) |
|
|
|
if not sqls: |
|
|
|
return '' |
|
|
|
return "" |
|
|
|
else: |
|
|
|
return ''' |
|
|
|
return """ |
|
|
|
/* REFERÊNCIAS A MATÉRIAS APAGADAS DE PROPOSIÇÕES |
|
|
|
|
|
|
|
ATENÇÃO |
|
|
@ -192,60 +213,76 @@ Para facilitar sua conferência, seguem os links para as proposições envolvida |
|
|
|
|
|
|
|
{} |
|
|
|
|
|
|
|
'''.format(table.draw(), links, sqls) |
|
|
|
""".format( |
|
|
|
table.draw(), links, sqls |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
def get_dependencias_a_ressuscitar(slug): |
|
|
|
ocorrencias = yaml.load( |
|
|
|
Path(DIR_REPO.child('ocorrencias.yaml').read_file())) |
|
|
|
fks_faltando = ocorrencias.get('fk') |
|
|
|
Path(DIR_REPO.child("ocorrencias.yaml").read_file()) |
|
|
|
) |
|
|
|
fks_faltando = ocorrencias.get("fk") |
|
|
|
if not fks_faltando: |
|
|
|
return [], [], [] |
|
|
|
|
|
|
|
proposicoes_para_materia = [ |
|
|
|
fk for fk in fks_faltando |
|
|
|
if fk['tabela'] == 'proposicao' and fk['campo'] == 'cod_materia'] |
|
|
|
fk |
|
|
|
for fk in fks_faltando |
|
|
|
if fk["tabela"] == "proposicao" and fk["campo"] == "cod_materia" |
|
|
|
] |
|
|
|
|
|
|
|
preambulo = get_apaga_materias_de_proposicoes( |
|
|
|
proposicoes_para_materia, slug) |
|
|
|
proposicoes_para_materia, slug |
|
|
|
) |
|
|
|
|
|
|
|
propagacoes = {(o, c) for t, o, c in PROPAGACOES_DE_EXCLUSAO} |
|
|
|
|
|
|
|
fks_faltando = [fk for fk in fks_faltando |
|
|
|
if fk not in proposicoes_para_materia |
|
|
|
and (fk['tabela'], fk['campo']) not in propagacoes] |
|
|
|
fks_faltando = [ |
|
|
|
fk |
|
|
|
for fk in fks_faltando |
|
|
|
if fk not in proposicoes_para_materia |
|
|
|
and (fk["tabela"], fk["campo"]) not in propagacoes |
|
|
|
] |
|
|
|
|
|
|
|
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 |
|
|
|
if condicao(res)]) |
|
|
|
set( |
|
|
|
[ |
|
|
|
(tabela_alvo, campo, valor) |
|
|
|
for tabela_origem, campo, valor, tabela_alvo, res in excluidos |
|
|
|
if condicao(res) |
|
|
|
] |
|
|
|
) |
|
|
|
for condicao in ( |
|
|
|
# o registro existe e ind_excluido == 1 |
|
|
|
lambda res: res and res[0][0] == 1, |
|
|
|
# o registro não existe |
|
|
|
lambda res: not res |
|
|
|
)] |
|
|
|
lambda res: not res, |
|
|
|
) |
|
|
|
] |
|
|
|
return preambulo, desexcluir, criar |
|
|
|
|
|
|
|
|
|
|
|
# deve ser idempotente pois é usada na criação de autor |
|
|
|
# por isso o ON DUPLICATE KEY UPDATE |
|
|
|
SQL_INSERT_TIPO_AUTOR = ''' |
|
|
|
SQL_INSERT_TIPO_AUTOR = """ |
|
|
|
insert into tipo_autor (tip_autor, des_tipo_autor, ind_excluido) |
|
|
|
values ({}, "DESCONHECIDO", 0) ON DUPLICATE KEY UPDATE ind_excluido = 0; |
|
|
|
''' |
|
|
|
""" |
|
|
|
|
|
|
|
# deve ser idempotente pois é usada na criação de comissao |
|
|
|
# por isso o ON DUPLICATE KEY UPDATE |
|
|
|
SQL_INSERT_TIPO_COMISSAO = ''' |
|
|
|
SQL_INSERT_TIPO_COMISSAO = """ |
|
|
|
insert into tipo_comissao (tip_comissao, nom_tipo_comissao, sgl_natureza_comissao, sgl_tipo_comissao, des_dispositivo_regimental, ind_excluido) |
|
|
|
values ({}, "DESCONHECIDO", "P", "DESC", NULL, 0) |
|
|
|
ON DUPLICATE KEY UPDATE ind_excluido = 0; |
|
|
|
''' |
|
|
|
""" |
|
|
|
|
|
|
|
SQLS_CRIACAO = [ |
|
|
|
('tipo_proposicao', ''' |
|
|
|
( |
|
|
|
"tipo_proposicao", |
|
|
|
""" |
|
|
|
insert into tipo_materia_legislativa ( |
|
|
|
tip_materia, sgl_tipo_materia, des_tipo_materia, ind_num_automatica, |
|
|
|
quorum_minimo_votacao, ind_excluido) |
|
|
@ -255,93 +292,137 @@ 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_materia_legislativa', 0] |
|
|
|
), |
|
|
|
('tipo_resultado_votacao', ''' |
|
|
|
""", |
|
|
|
["tipo_materia_legislativa", 0], |
|
|
|
), |
|
|
|
( |
|
|
|
"tipo_resultado_votacao", |
|
|
|
""" |
|
|
|
insert into tipo_resultado_votacao ( |
|
|
|
tip_resultado_votacao, nom_resultado, ind_excluido) |
|
|
|
values ({}, "DESCONHECIDO", 0); |
|
|
|
'''), |
|
|
|
('tipo_autor', SQL_INSERT_TIPO_AUTOR), |
|
|
|
('unidade_tramitacao', ''' |
|
|
|
""", |
|
|
|
), |
|
|
|
("tipo_autor", SQL_INSERT_TIPO_AUTOR), |
|
|
|
( |
|
|
|
"unidade_tramitacao", |
|
|
|
""" |
|
|
|
insert into unidade_tramitacao ( |
|
|
|
cod_unid_tramitacao, cod_comissao, cod_orgao, cod_parlamentar, ind_excluido) |
|
|
|
values ({}, NULL, NULL, 0, 0); |
|
|
|
'''), |
|
|
|
('autor', SQL_INSERT_TIPO_AUTOR.format(0) + ''' |
|
|
|
""", |
|
|
|
), |
|
|
|
( |
|
|
|
"autor", |
|
|
|
SQL_INSERT_TIPO_AUTOR.format(0) |
|
|
|
+ """ |
|
|
|
insert into autor ( |
|
|
|
cod_autor, cod_partido, cod_comissao, cod_parlamentar, tip_autor, |
|
|
|
nom_autor, des_cargo, col_username, ind_excluido) |
|
|
|
values ({}, 0, 0, 0, 0, "DESCONHECIDO", "DESCONHECIDO", NULL, 0); |
|
|
|
'''), |
|
|
|
('tipo_documento', ''' |
|
|
|
""", |
|
|
|
), |
|
|
|
( |
|
|
|
"tipo_documento", |
|
|
|
""" |
|
|
|
insert into tipo_documento (tip_documento, des_tipo_documento, ind_excluido) |
|
|
|
values ({}, "DESCONHECIDO", 0); |
|
|
|
'''), |
|
|
|
('partido', ''' |
|
|
|
""", |
|
|
|
), |
|
|
|
( |
|
|
|
"partido", |
|
|
|
""" |
|
|
|
insert into partido (cod_partido, sgl_partido, nom_partido, dat_criacao, dat_extincao, ind_excluido) |
|
|
|
values ({}, "DESC", "DESCONHECIDO", NULL, NULL, 0); |
|
|
|
'''), |
|
|
|
('legislatura', ''' |
|
|
|
""", |
|
|
|
), |
|
|
|
( |
|
|
|
"legislatura", |
|
|
|
""" |
|
|
|
insert into legislatura (num_legislatura, dat_inicio, dat_fim, dat_eleicao, ind_excluido) |
|
|
|
values ({}, "1/1/1", "1/1/1", "1/1/1", 0); |
|
|
|
'''), |
|
|
|
('cargo_mesa', ''' |
|
|
|
""", |
|
|
|
), |
|
|
|
( |
|
|
|
"cargo_mesa", |
|
|
|
""" |
|
|
|
insert into cargo_mesa (cod_cargo, des_cargo, ind_unico, ind_excluido) |
|
|
|
values ({}, "DESCONHECIDO", 0, 0); |
|
|
|
'''), |
|
|
|
('orgao', ''' |
|
|
|
""", |
|
|
|
), |
|
|
|
( |
|
|
|
"orgao", |
|
|
|
""" |
|
|
|
insert into orgao (cod_orgao, nom_orgao, sgl_orgao, ind_unid_deliberativa, end_orgao, num_tel_orgao, ind_excluido) |
|
|
|
values ({}, "DESCONHECIDO", "DESC", 0, NULL, NULL, 0); |
|
|
|
'''), |
|
|
|
('origem', ''' |
|
|
|
""", |
|
|
|
), |
|
|
|
( |
|
|
|
"origem", |
|
|
|
""" |
|
|
|
insert into origem (cod_origem, sgl_origem, nom_origem, ind_excluido) |
|
|
|
values ({}, "DESC", "DESCONHECIDO", 0); |
|
|
|
'''), |
|
|
|
('tipo_comissao', SQL_INSERT_TIPO_COMISSAO), |
|
|
|
('comissao', SQL_INSERT_TIPO_COMISSAO.format(0) + ''' |
|
|
|
""", |
|
|
|
), |
|
|
|
("tipo_comissao", SQL_INSERT_TIPO_COMISSAO), |
|
|
|
( |
|
|
|
"comissao", |
|
|
|
SQL_INSERT_TIPO_COMISSAO.format(0) |
|
|
|
+ """ |
|
|
|
insert into comissao (cod_comissao, tip_comissao, nom_comissao, sgl_comissao, dat_criacao, |
|
|
|
ind_unid_deliberativa, ind_excluido) |
|
|
|
values ({}, 0, "DESCONHECIDO", "DESC", "1-1-1", 0, 0); |
|
|
|
'''), |
|
|
|
('parlamentar', ''' |
|
|
|
""", |
|
|
|
), |
|
|
|
( |
|
|
|
"parlamentar", |
|
|
|
""" |
|
|
|
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', ''' |
|
|
|
""", |
|
|
|
), |
|
|
|
( |
|
|
|
"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} |
|
|
|
SQLS_CRIACAO = { |
|
|
|
k: (dedent(sql.strip()), extras) for k, sql, *extras in SQLS_CRIACAO |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
def criar_sessao_legislativa(campo, valor): |
|
|
|
assert campo == 'cod_sessao_leg' |
|
|
|
assert campo == "cod_sessao_leg" |
|
|
|
[(num_legislatura,)] = exec_legado( |
|
|
|
'select min(num_legislatura) from legislatura where ind_excluido <> 1') |
|
|
|
return ''' |
|
|
|
"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) |
|
|
|
""".format( |
|
|
|
valor, num_legislatura |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
def get_link(tabela_alvo, valor, slug): |
|
|
|
url_base = get_url(slug) |
|
|
|
return 'http://{}{}/{}'.format(url_base, urls[tabela_alvo], valor) |
|
|
|
return "http://{}{}/{}".format(url_base, urls[tabela_alvo], valor) |
|
|
|
|
|
|
|
|
|
|
|
def get_sql_desexcluir(tabela_alvo, campo, valor, slug): |
|
|
|
sql = 'update {} set ind_excluido = 0 where {} = {};'.format( |
|
|
|
tabela_alvo, campo, valor) |
|
|
|
sql = "update {} set ind_excluido = 0 where {} = {};".format( |
|
|
|
tabela_alvo, campo, valor |
|
|
|
) |
|
|
|
return sql, [get_link(tabela_alvo, valor, slug)] |
|
|
|
|
|
|
|
|
|
|
|
def get_sql_criar(tabela_alvo, campo, valor, slug): |
|
|
|
if tabela_alvo == 'sessao_legislativa': |
|
|
|
if tabela_alvo == "sessao_legislativa": |
|
|
|
sql = criar_sessao_legislativa(campo, valor) |
|
|
|
extras = [] |
|
|
|
else: |
|
|
@ -353,7 +434,7 @@ def get_sql_criar(tabela_alvo, campo, valor, slug): |
|
|
|
return sql, links |
|
|
|
|
|
|
|
|
|
|
|
TEMPLATE_RESSUSCITADOS = '''{} |
|
|
|
TEMPLATE_RESSUSCITADOS = """{} |
|
|
|
/* RESSUSCITADOS |
|
|
|
|
|
|
|
|
|
|
@ -371,11 +452,11 @@ Ao tentar excluir um registro usado em outras partes do sistema, você verá uma |
|
|
|
*/ |
|
|
|
|
|
|
|
{} |
|
|
|
''' |
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
def get_url(slug): |
|
|
|
return 'sapl.{}.leg.br'.format(slug.replace('-', '.')) |
|
|
|
return "sapl.{}.leg.br".format(slug.replace("-", ".")) |
|
|
|
|
|
|
|
|
|
|
|
def sem_repeticoes_mantendo_ordem(sequencia): |
|
|
@ -383,24 +464,31 @@ def sem_repeticoes_mantendo_ordem(sequencia): |
|
|
|
|
|
|
|
|
|
|
|
def get_sqls_desexcluir_criar(preambulo, desexcluir, criar, slug): |
|
|
|
sqls_links = [get_sql(*(args + (slug,))) |
|
|
|
for itens, get_sql in ((desexcluir, get_sql_desexcluir), |
|
|
|
(criar, get_sql_criar)) |
|
|
|
for args in itens] |
|
|
|
sqls_links = [ |
|
|
|
get_sql(*(args + (slug,))) |
|
|
|
for itens, get_sql in ( |
|
|
|
(desexcluir, get_sql_desexcluir), |
|
|
|
(criar, get_sql_criar), |
|
|
|
) |
|
|
|
for args in itens |
|
|
|
] |
|
|
|
if not sqls_links: |
|
|
|
return '' |
|
|
|
return "" |
|
|
|
else: |
|
|
|
sqls, links = zip(*sqls_links) |
|
|
|
|
|
|
|
sqls = [dedent(s.strip()) + ';' |
|
|
|
for sql in sqls |
|
|
|
for s in sql.split(';') if s.strip()] |
|
|
|
sqls = [ |
|
|
|
dedent(s.strip()) + ";" |
|
|
|
for sql in sqls |
|
|
|
for s in sql.split(";") |
|
|
|
if s.strip() |
|
|
|
] |
|
|
|
sqls = sem_repeticoes_mantendo_ordem(sqls) |
|
|
|
|
|
|
|
links = (l for ll in links for l in ll) # flatten |
|
|
|
links = sem_repeticoes_mantendo_ordem(links) |
|
|
|
|
|
|
|
sqls, links = ['\n'.join(sorted(s)) for s in [sqls, links]] |
|
|
|
sqls, links = ["\n".join(sorted(s)) for s in [sqls, links]] |
|
|
|
return TEMPLATE_RESSUSCITADOS.format(preambulo, links, sqls) |
|
|
|
|
|
|
|
|
|
|
@ -410,8 +498,8 @@ def get_ressuscitar(slug): |
|
|
|
|
|
|
|
|
|
|
|
def get_slug(): |
|
|
|
arq = DIR_DADOS_MIGRACAO.child('siglas_para_slugs.yaml') |
|
|
|
with open(arq, 'r') as arq: |
|
|
|
arq = DIR_DADOS_MIGRACAO.child("siglas_para_slugs.yaml") |
|
|
|
with open(arq, "r") as arq: |
|
|
|
siglas_para_slugs = yaml.load(arq) |
|
|
|
sigla = NOME_BANCO_LEGADO[-3:] |
|
|
|
return siglas_para_slugs[sigla] |
|
|
@ -422,4 +510,4 @@ def adiciona_ressuscitar(): |
|
|
|
if sqls.strip(): |
|
|
|
arq_ajustes_pre_migracao = get_arquivo_ajustes_pre_migracao() |
|
|
|
conteudo = arq_ajustes_pre_migracao.read_file() |
|
|
|
arq_ajustes_pre_migracao.write_file('{}\n{}'.format(conteudo, sqls)) |
|
|
|
arq_ajustes_pre_migracao.write_file("{}\n{}".format(conteudo, sqls)) |
|
|
|