def get_docs_published(proc, *args, json_alike=True): '''Gets list of process's published documents''' docs = proc.get('sei', {}).get('dispatchedDocuments', []) dados = [] for doc in docs: dados_doc = [ b_resp('data_publicacao', 'Data de publicação do documento no Diário Oficial', timestamp_to_txt(doc.get('datPublicacao'))), b_resp( 'prazo_resposta', 'Prazo em dias para resposta à publicação (p. ex. resposta Comunique-se)', doc.get('numPrazoComuniquese', None)), b_resp('tipo_documento', 'Tipo de documento publicado', doc.get('txtTipoDocumento')), b_resp('num_id_doc', 'Número identificador do documento no SEI', doc.get('numDocumento')) ] dados.append(dados_doc) if dados: return dados else: return [ b_resp('no_doc_found', 'Nenhum documento foi encontrado', None) ]
def __doc_respo_complex(respo, dados): doc = respo.get_m(['cpfcnpj_proprietario']) dados_doc = [b_resp( 'doc', 'Número do documento do responsável pelo imóvel', doc.get_m(['cpfCnpj']) ), b_resp( 'tipo_doc', 'Tipo de documento do responsável pelo imóvel', doc.get_m(['type'], None)) ] dados.extend(dados_doc) if doc.get_m(['type']) == 'cnpj': dados_responsavel_empresa = [ b_resp('nome_resp_empresa', 'Nome do responsável pela empresa', respo.get_m(['cpfcnpj_proprietario']).get_m(['nomeResp'])), b_resp('cpf_resp_empresa', 'CPF do responsável pela empresa', respo.get_m(['cpfcnpj_proprietario', 'cnpj_proprietario']).get_m(['cpfResp'])) ] dados.extend(dados_responsavel_empresa)
def __doc_respo_flat_cnpj(respo, dados): dados_doc = [b_resp( 'doc', 'Número do documento do responsável pelo imóvel', respo.get_m(['cnpj_proprietario']) ), b_resp( 'tipo_doc', 'Tipo de documento do responsável pelo imóvel', 'cnpj') ] dados_responsavel_empresa = [ b_resp('nome_resp_empresa', 'Nome do responsável pela empresa', respo.get_m(['representante_proprietario'])), b_resp('cpf_resp_empresa', 'CPF do responsável pela empresa', respo.get_m(['cpf_proprietario'])) ] dados.extend(dados_doc) dados.extend(dados_responsavel_empresa)
def list_assuntos(*args, include_disabled = False, json_alike = True): db = gen_db() cidade = db.city.find_one() dados = [] for proc in cidade['processos']: if not include_disabled and proc.get('disabled'): continue dados.append( [ b_resp( 'assunto', 'Título do assunto', proc['title'] ), b_resp( 'desc', 'Descrição do assunto', proc['descricao'] ), b_resp( 'disabled', 'Indica se o processo está desabilitado', proc['disabled'] ), b_resp( 'categoria', 'Tipo de assunto ou Coordenadoria responsável pela análise', proc.get('categoria') ) ] ) return dados
def __aux_dados_area_escritura(last_version): return [ b_resp('area_terreno_real', 'Área real do terreno', last_version.get_m(['escrituradoterreno'], None)), b_resp('area_escritura', 'Área registrada em escritura', last_version.get_m(['area_terreno_real'], None)), ]
def __dados_terreno_flat(last_version): '''Neste modelo há apenas um SQL por solicitacao e os dados estão flat''' dados_terr = [ b_resp('tipo_identificacao', 'Tipo de identificação do imóvel - SQL ou Incra', last_version.get_m(['identificacao_imovel'])), b_resp('identificacao_terreno', 'Código de identificação do terreno (SQL ou INCRA)', last_version.get_m(['campo_sql', 'cadastro_rural'])), b_resp('codlog', 'Código do logradouro em que se situa a fachada do terreno', last_version.get_m(['codlog'])), b_resp('area_terreno_real', 'Área real do terreno', last_version.get_m(['area_terreno_real'], None)), b_resp('area_escritura', 'Área registrada em escritura', last_version.get_m(['escrituradoterreno'], None)), b_resp('cep', 'CEP do terreno', last_version.get_m(['endereco-cep'])), b_resp('end_testada_principal', 'Endereço da testada principal', __aux_end_flat(last_version)), b_resp('distrito', 'Distrito em que se situa o imóvel', last_version.get_m(['id-bairro'])) ] return dados_terr
def integracao_estande_vendas(last_version): integracao = last_version['integracao_localizacaoimovel']['data'][ 'response']['data'] dados = [] for terreno in integracao: dados_terr = [ b_resp('tipo_identificacao', 'Tipo de identificação do imóvel - SQL ou Incra', terreno['tipo_identificacao']), b_resp('identificacao_terreno', 'Código de identificação do terreno (SQL ou INCRA)', terreno['identificacao_terreno']), b_resp( 'codlog', 'Código do logradouro em que se situa a fachada do terreno', terreno['codlog']), b_resp('cep', 'CEP do terreno', terreno['cep']), b_resp('end_testada_principal', 'Endereço da testada principal', terreno['end_testada_principal']), b_resp('distrito', 'Distrito em que se situa o imóvel', terreno['distrito']), b_resp('area_terreno_real', 'Área real do terreno', terreno['area_terreno_real']), b_resp('area_escritura', 'Área registrada em escritura', terreno['area_escritura']) ] dados.append(dados_terr) return dados
def _dados_um_resp(respo): '''Parse all the data for one of the owner's info''' dados = [ b_resp('nome', 'Nome do responsável pelo imóvel', respo.get_m(['nome-proprietario'], None)), b_resp( 'tipo_vinculo', 'Tipo de vínculo do responsável pelo imóvel', respo.get_m(['tipo_vinculo_proprietario', 'tipo_vinculo'], None)), b_resp('doc', 'Número do documento do responsável pelo imóvel', respo.get_m(['cpfcnpj_proprietario']).get_m(['cpfCnpj'], None)), b_resp('tipo_doc', 'Tipo de documento do responsável pelo imóvel', respo.get_m(['cpfcnpj_proprietario']).get_m(['type'], None)), b_resp('email', 'E-mail do responsável pelo imóvel', respo.get_m(['email_proprietario'], None)), b_resp('endereco', 'Endereço do responsável pelo imóvel', _build_address_respo(respo)), b_resp('cep', 'CEP do responsável pelo imóvel', respo.get_m(['cep_proprietario'], None)), #NÃO CONSEGUI IDENTIFICAR NENHUM PROCESSO COM INFORMAÇÃO DE TELEFONE DO RESP b_resp('telefone', 'Telefone do responsável pelo imóvel', 'Informação Não Disponível') ] return dados
def __doc_respo_flat_cpf(respo, dados): dados_doc = [b_resp( 'doc', 'Número do documento do responsável pelo imóvel', respo.get_m(['cpf_proprietario']) ), b_resp( 'tipo_doc', 'Tipo de documento do responsável pelo imóvel', 'cpf') ] dados.extend(dados_doc) dados.extend(dados_responsavel_empresa)
def __dados_terreno_declaratorio(terreno): aux_endereco = lambda x: ', '.join([ item for item in [ x.get('nome_logradouro'), str(x.get('iptu_numeracao')), x.get('complemento_imovel'), x.get('iptu_bairro') ] if item ]) dados_terr = [ b_resp('tipo_identificacao', 'Tipo de identificação do imóvel - SQL ou Incra', 'sql'), b_resp('identificacao_terreno', 'Código de identificação do terreno (SQL ou INCRA)', terreno.get_m(['sql']).get_m(['input'])), b_resp('codlog', 'Código do logradouro em que se situa a fachada do terreno', terreno.get_m(['codlog'])), b_resp('cep', 'CEP do terreno', terreno.get_m(['iptu_cep'])), b_resp('end_testada_principal', 'Endereço da testada principal', aux_endereco(terreno)), b_resp('distrito', 'Distrito em que se situa o imóvel', terreno.get_m(['subprefeitura'])), b_resp('area_terreno_real', 'Área real do terreno', terreno.get_m(['area_terreno_real'], None)), b_resp('area_escritura', 'Área registrada em escritura', terreno.get_m(['escrituradoterreno'], None)) ] return dados_terr
def __aux_public_indeferido(dados, proc): docs_publicados = get_docs_published(proc, json_alike=True) for doc in docs_publicados: if doc.get('tipo_documento') == 'Despacho indeferido': dados.append( b_resp('data_publicacao', 'Data de publicação no Diário Oficial', doc.get('data_publicacao'))) break #nao publicou ainda else: dados.append( b_resp('data_publicacao', 'Data de publicação no Diário Oficial', None))
def __dados_terreno(terreno): aux_endereco = lambda x: ', '.join([ item for item in [ x['nome_logradouro'], x['numero-predial'], x.get('complemento_imovel'), x.get('id-bairro') ] if item ]) dados_terr = [ b_resp('tipo_identificacao', 'Tipo de identificação do imóvel - SQL ou Incra', terreno.get_m(['tipo_identificacao'])), b_resp('identificacao_terreno', 'Código de identificação do terreno (SQL ou INCRA)', terreno.get_m(['campo_sql', 'cadastro_rural'])), b_resp('codlog', 'Código do logradouro em que se situa a fachada do terreno', terreno.get_m(['codlog'])), b_resp('cep', 'CEP do terreno', terreno.get_m(['endereco-cep'])), b_resp('end_testada_principal', 'Endereço da testada principal', aux_endereco(terreno)), b_resp('distrito', 'Distrito em que se situa o imóvel', terreno.get_m(['id-bairro'])) ] return dados_terr
def get_proc_mdata(proc, *args, json_alike=True): '''Gets process-related data''' # em alguns casos podemos chamar a chave direto # porque tem padrão nos dados status = status_processo(proc) dados = [ b_resp('num_protocolo', 'Número de protocolo no Aprova Digital', proc['nP']), b_resp('dt_protocolo', 'Data de protocolo', proc['created_at']), b_resp('dt_ultima_atualiz', 'Última atualização', proc['updated_at']), b_resp('num_proc_sei', 'Número de processo SEII', proc.get_m(['sei'])\ .get_m(['txtCodigoProcedimentoFormatado'], None)), b_resp('assunto', 'Assunto da solicitação', proc['config_metadata']['title'], ), b_resp('status', 'Situação da solicitação', status) ] #chama funcao auxiliar para devolver data de publicacao __aux_dt_public(status, dados, proc) return dados
def __aux_dt_public(status, dados, proc): if status == 'deferido': __aux_public_deferido(dados, proc) elif status == 'indeferido' or status == 'indeferido e finalizado': __aux_public_indeferido(dados, proc) #nao tem nada para publicar else: dados.append( b_resp('data_publicacao', 'Data de publicação no Diário Oficial', None))
def dados_estandes_existentes(num_proc, *args, json_alike=True): estandes = find_estandes(num_proc) dados = [] for estande in estandes: dados_estande = [ b_resp('metadados_processo', 'Dados relacionados ao processo de Estande de Vendas', get_proc_mdata(estande, json_alike=False)), b_resp( 'dados_resps_imovel', 'Dados dos responsáveis pelo imóvel em que se situa o Estande de Vendas', dados_resps_imovel(estande, json_alike=False)), b_resp( 'dados_terrenos', 'Dados relacionados ao(s) terreno(s) em que se situa o Estande de Vendas', get_dados_terrenos(estande, json_alike=False)), ] dados.append(dados_estande) return dados
def dados_integracao_estande(proc): integracao = proc['last_version']['integracao_respimovel']['data']['response']['data'] dados = [] for resp in integracao: dados_resp = [ b_resp( 'nome', 'Nome do responsável pelo imóvel', resp['nome']), b_resp( 'tipo_vinculo', 'Tipo de vínculo do responsável pelo imóvel', resp['tipo_vinculo']), b_resp( 'email', 'E-mail do responsável pelo imóvel', resp['email']), b_resp( 'endereco', 'Endereço do responsável pelo imóvel', resp['endereco']), b_resp('cep', 'CEP do responsável pelo imóvel', resp['cep']), # NÃO CONSEGUI IDENTIFICAR NENHUM PROCESSO COM INFORMAÇÃO DE TELEFONE DO RESP b_resp('telefone', 'Telefone do responsável pelo imóvel', resp['telefone']) ] if 'nome_resp_empresa' in integracao: dados.extend([ b_resp('nome_resp_empresa', 'Nome do responsável pela empresa', resp['nome_resp_empresa']), b_resp('cpf_resp_empresa', 'CPF do responsável pela empresa', resp['nome_resp_empresa'])]) dados.append(dados_resp) return dados
def list_procs_by_assunto(assunto, *args, json_alike = True): assunto = re.sub(r'^\d\. ', '', assunto) assunto = assunto.strip() db = gen_db() procs = db.process.find({'config_metadata.title': assunto}, {'nP': 1}) dados = [ b_resp('num_protocolo', 'Número de protocolo do processo no Aprova Digital', proc['nP']) for proc in procs ] return dados