Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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
Beispiel #12
0
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
Beispiel #13
0
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
Beispiel #14
0
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
Beispiel #15
0
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
Beispiel #16
0
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