def Editar_Pessoa(): editar_request = request.json segredo = editar_request['_id'] dados_editados = editar_request['dados_editados'] print("\n[Requisição-PUT] /Edição de dados de Pessoa \n" + str(editar_request) + "\n") try: orq.editar_dados_pessoa(segredo, dados_editados) if 'dados_excluidos' in editar_request: dados_excluidos = editar_request['dados_excluidos'] orq.excluir_dados_pessoa(segredo, dados_excluidos) else: dados_excluidos = None json_retorno = RespostasAPI('Edição realizada com sucesso', { 'segredo': segredo, 'dados editados' : dados_editados, 'dados_excluidos' : dados_excluidos, } ).JSON return json_retorno except StatusInternos as e: return e.errors
def Cadastrar_Pessoa(): """ Endpoint responsável por cadastrar pessoas dentro da base de dados. `Requisição:` Deve ser feita com base no `SchemaCadastro`. `Resposta:` Será com base na `Classe StatusInternos` caso houver `erros internos`, ou na `Classe RespostasAPI` para formatar as referidas respostas. """ pessoa_request = request.json print("\n[Requisição-POST] /pessoa/cadastro:\n" + str(pessoa_request) + "\n") try: retorno_id = orq.cadastrar_pessoa(pessoa_request) json_retorno = RespostasAPI('Cadastro realizado com sucesso', { 'segredo': str(retorno_id), 'nome_usuario': str(pessoa_request['nome_completo']) } ).JSON return json_retorno except StatusInternos as e: return e.errors
def Listar_Empresa(): print("\n[Requisição-GET] /Listar de Empresas") try: retorno = orq.listar_empresas() json_retorno = RespostasAPI('Consulta realizada com sucesso', { 'empresas': retorno }).JSON return json_retorno except StatusInternos as e: return e.errors
def Consultar_Projeto(segredo): segredo = ObjectId(segredo) print("\n[Requisição-GET] /Consultar dados Projeto:\n" "\n") try: retorno = orq.verificar_id_projeto(segredo) json_retorno = RespostasAPI('Consulta realizada com sucesso', { 'segredo': str(segredo), 'dados': retorno }).JSON return json_retorno except StatusInternos as e: return e.errors
def Consultar_Externo(segredo): try: segredo = ObjectId(segredo) dados_pp = orq.consultar_projeto_pessoa_segredo(segredo) pessoa_pp = dados_pp['id_pessoa'] projeto_pp = dados_pp['id_projeto'] status_pp = dados_pp['status'] if status_pp == True: dados_projeto = orq.verificar_id_projeto(projeto_pp) requerimentos_projeto = dados_projeto['requerimentos'] dados_pessoa = orq.verificar_id_usuario(pessoa_pp) projeto_req = [] for key in requerimentos_projeto: projeto_req.append(key['campo']) requerimentos_pessoa_x_projeto = {} for key, value in dados_pessoa.items(): if key in projeto_req: requerimentos_pessoa_x_projeto[key] = value json_retorno = RespostasAPI( 'Consulta externa realizada com sucesso', { "pessoa": str(pessoa_pp), "dados": requerimentos_pessoa_x_projeto, }).JSON else: json_retorno = RespostasAPI('Consulta externa não autorizada', { "pessoa": str(pessoa_pp) }).JSON return json_retorno except StatusInternos as e: return e.errors
def Cadastrar_Empresa(): empresa_request = request.json print("\n[Requisição-POST] /empresa:\n" + str(empresa_request) + "\n") try: retorno_id = orq.cadastrar_empresa(empresa_request) json_retorno = RespostasAPI('Cadastro realizado com sucesso', { 'segredo': str(retorno_id), 'cnpj': str(empresa_request['cnpj']) }).JSON return json_retorno except StatusInternos as e: return e.errors
def Gerar_Token(): try: segredo = request.json['segredo'] redirect = request.json['redirect'] projeto_existente = orq.verificar_id_projeto_externos(segredo) if projeto_existente: token = hashlib.sha256( (str(segredo) + str(datetime.now())).encode()).hexdigest() vencimento = datetime.now() + timedelta(minutes=5) orq.armazenar_tokens(segredo, token, vencimento, redirect) return RespostasAPI('Token gerado com sucesso', { 'token': str(token), }).JSON else: raise StatusInternos('SI-21', {'projeto': segredo}) except StatusInternos as e: return e.errors
def Consultar_Por_Pessoa(segredo): print("\n[Requisição-GET] /Consultar dados Projeto por Pessoa:\n" "\n") try: lista_projetos = orq.consulta_projetos_por_pessoa(segredo) if lista_projetos != None: json_retorno = RespostasAPI('Consulta realizada com sucesso', { 'segredo': str(segredo), 'dados': lista_projetos }).JSON return json_retorno else: raise StatusInternos('SI-23', {'pessoa': segredo}) except StatusInternos as e: return e.errors
def Consultar_Empresa(segredo): segredo = ObjectId(segredo) empresa_request = request.json print("\n[Requisição-GET] /Consulta de Empresa: \n" + str(empresa_request) + "\n") try: retorno = orq.verificar_id_empresa(segredo) json_retorno = RespostasAPI('Consulta realizada com sucesso', { 'segredo': str(segredo), 'dados': retorno, }).JSON return json_retorno except StatusInternos as e: return e.errors
def Cadastrar_Projeto(): projeto_request = request.json print("\n[Requisição-POST] /Cadastro de Projeto: \n" + str(projeto_request) + "\n") try: retorno_id = orq.cadastrar_projeto(projeto_request) json_retorno = RespostasAPI( 'Cadastro realizado com sucesso', { 'segredo': str(retorno_id), 'nome_projeto': projeto_request['nome_projeto'] }).JSON return json_retorno except StatusInternos as e: return e.errors
def ExcluirDados_Pessoa(): excluir_dados_request = request.json segredo = excluir_dados_request['_id'] dados_excluidos = excluir_dados_request['dados_excluidos'] print("\n[Requisição-DELETE] /Excluir Dados:\n" + str(excluir_dados_request) + "\n") try: orq.excluir_dados_pessoa(segredo,dados_excluidos) json_retorno = RespostasAPI('Exclusão realizada com sucesso', { 'segredo': str(segredo), 'dados' : str(dados_excluidos), } ).JSON return json_retorno except StatusInternos as e: return e.errors
def AdicionarDados_Pessoa(): adicionar_dados_request = request.json segredo = (adicionar_dados_request['_id']) dados_novos = adicionar_dados_request['dados_novos'] print("\n[Requisição-PUT] /Adicionar_Dados:\n" + str(adicionar_dados_request) + "\n") try: orq.adicionar_dados_pessoa(segredo,dados_novos) json_retorno = RespostasAPI('Adição realizada com sucesso', { 'segredo': str(segredo), 'dados adicionados': str(dados_novos), } ).JSON return json_retorno except StatusInternos as e: return e.errors
def Validar_Token(): try: token = request.json['token'] info_token = orq.consulta_info_token(token) vencimento_token = info_token['vencimento'] projeto_token = info_token['id_projeto'] redirect_token = info_token['redirect'] if datetime.now() < vencimento_token: projeto = orq.verificar_id_projeto(projeto_token) json_retorno = RespostasAPI( 'Token válido', { "token": token, "id_projeto": projeto_token, "redirect": redirect_token, "objeto_projeto": projeto }).JSON return json_retorno else: raise StatusInternos('SI-22', {'projeto': projeto_token}) except StatusInternos as e: return e.errors
def Aceitar_Termos(): print("\n[Requisição-PUT] /Definir permissão do usuário para o projeto:\n" "\n") try: segredo = request.json['segredo'] aceito = request.json['aceito'] if (type(aceito) != bool): raise StatusInternos('SI-XX', {'segredo': segredo}) status = orq.aceite_termos(segredo, aceito) if status != None: json_retorno = RespostasAPI('Permissão definida', { 'segredo': str(segredo), 'dados': status }).JSON return json_retorno else: raise StatusInternos('SI-4', {'segredo': segredo}) except StatusInternos as e: return e.errors
def Logar_Pessoa(): login_request = request.json print("\n[Requisição-POST] /pessoa/login:\n" + str(login_request) + "\n") try: metodo_entrada = login_request['metodo_entrada'] senha = login_request['senha'] tipo_entrada = login_request['tipo_entrada'] retorno = orq.login_pessoa(metodo_entrada, senha, tipo_entrada) print(retorno) json_retorno = RespostasAPI('Login realizado com sucesso.', { 'segredo': retorno['segredo'], 'nome_usuario': retorno['nome_usuario'], } ).JSON return json_retorno except StatusInternos as e: return e.errors
def Logar_Externo(): try: metodo_entrada = request.json['metodo_entrada'] senha = request.json['senha'] tipo_entrada = request.json['tipo_entrada'] id_projeto = request.json['segredo'] token = request.json['token'] gerar_vinculo = False if 'gera_vinculo' in request.json: gerar_vinculo = True pessoa_logada = orq.login_pessoa(metodo_entrada, senha, tipo_entrada, externo=True) id_pessoa = pessoa_logada['_id'] projeto_pessoa_info = orq.consultar_projeto_pessoa( id_projeto, str(id_pessoa)) projeto_info = orq.verificar_id_projeto(id_projeto) if projeto_info: projeto_required_chaves = projeto_info['requerimentos'] pessoa_req = [] for key in pessoa_logada.keys(): pessoa_req.append(key) projeto_req = [] for key in projeto_required_chaves: projeto_req.append(key['campo']) missed_keys = [] for key in projeto_req: if key not in pessoa_req: missed_keys.append(key) if (len(missed_keys) == 0): if projeto_pessoa_info is None: if gerar_vinculo: criacao_vinculo = datetime.now() redirect_token = orq.consulta_info_token(token) redirect_link = redirect_token['redirect'] cadastro_pp = orq.cadastrar_projeto_pessoa( str(id_projeto), str(id_pessoa), criacao_vinculo, True, criacao_vinculo) json_retorno = RespostasAPI( 'Vínculo Gerado', { "status_requerimento": True, "status_vinculo": True, "segredo": str(cadastro_pp), "redirect": redirect_link, }).JSON else: json_retorno = RespostasAPI('Vínculo Pendente', { "status_requerimento": True, "status_vinculo": False }).JSON else: registro_pp = projeto_pessoa_info['_id'] redirect_token = orq.consulta_info_token(token) redirect_link = redirect_token['redirect'] orq.atualizar_ultimo_login(str(registro_pp), datetime.now()) json_retorno = RespostasAPI( 'Vinculo Ok', { "status_requerimento": True, "status_vinculo": True, "segredo": str(registro_pp), "redirect": redirect_link, }).JSON else: json_retorno = RespostasAPI( 'Vinculo NOK', { "status_requerimento": False, "campos_incompletos": missed_keys, }).JSON return json_retorno else: raise StatusInternos('SI-22') except StatusInternos as e: return e.errors