def get_excluido(fk): tabela_origem, campo, valor = [fk[k] for k in ('tabela', 'campo', 'valor')] 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(''' 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: 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) res = list(exec_legado(sql)) return tabela_origem, campo, valor, tabela_alvo, res
def get_excluido(fk): campo, valor, tabela_origem = [fk[k] for k in ('campo', 'valor', 'tabela')] 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)) return tabela_origem, campo, valor, tabela_alvo, res
def migrar_propriedades_da_casa(repo): print('#### Migrando propriedades da casa ####') caminho = join(repo.working_dir, 'sapl_documentos/propriedades.yaml') repo.git.execute('git annex get'.split() + [caminho]) with open(caminho, 'r') as arquivo: propriedades = yaml.safe_load(arquivo) casa = CasaLegislativa.objects.first() if not casa: casa = CasaLegislativa() campos_para_propriedades = [('codigo', 'cod_casa'), ('nome', 'nom_casa'), ('sigla', 'sgl_casa'), ('endereco', 'end_casa'), ('cep', 'num_cep'), ('telefone', 'num_tel'), ('fax', 'num_fax'), ('endereco_web', 'end_web_casa'), ('email', 'end_email_casa'), ('sigla', 'sgl_casa'), ('informacao_geral', 'txt_informacao_geral')] for campo, prop in campos_para_propriedades: setattr(casa, campo, propriedades[prop]) # localidade sql_localidade = ''' select nom_localidade, sgl_uf from localidade where cod_localidade = {}'''.format(propriedades['cod_localidade']) [(casa.municipio, casa.uf)] = exec_legado(sql_localidade) # logotipo migrar_logotipo(repo, casa, propriedades) casa.save() repo.git.rm(caminho)
def get_desc_materia(cod_materia): 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) return list(exec_legado(sql))[0]
def get_tabela_campo_tipo_proposicao(tip_proposicao): [(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' else: raise (Exception('ind_mat_ou_doc inválido'))
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)