Skip to content

InovaCPS/back-antena-cps

Repository files navigation

Antena CPS

Este projeto tem como premissa a criação da maior e melhor plataforma de conexão entre alunos e o ecossistema.

A fim de virar uma comunidade, decidimos deixar algumas features disponíveis para que alunos e/ou interessados em colaborar possam ajudar no desenvolvimento, adquirindo experiencia, podendo usar sua contribuição como portfólio!

Como Você pode Colaborar

Se você está a fim de ajudar no desenvolvimento, sempre disponibilizaremos "bugs" na aba de Issues do repositorio, bem como features no kanban disponivel em Projects, no projeto Open Source.

O Front-End do projeto está sendo construido em Angular CLi e o Back-End em Python e Flask! Saiba mais sobre o Front-end clicando aqui

Equipe

A equipe envolvida neste projeto faz parte do INOVA Paula Souza, do CPS. Conheça melhor a equipe clicando aqui

Project Charter

image

Começando

(em construção)

Tutoriais

Instruções para montar o projeto:

  • Criando um novo ambiente virtual (venv) para rodar junto ao Python 3
    python3 -m venv venv

ou bash virtualenv -p python3 venv

  • Acessando o ambiente virtual venv
    source venv/bin/activate
  • Atualizando a ferramenta "pip"
    pip install --upgrade pip
  • Saindo do ambiente virtual venv
    deactivate

Instruções opcionais - Use se necessário:

  • Atualizando todos os pacotes instalados na "venv"
    1. Access venv
    2. Execute:
    pip freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U 
  • Criando a base de dados do projeto
    • Pre-requerimentos (software)
    • Execute o seguinte comando
      • Desenvolvimento
        • Criar base de dados
        mvn clean resources:resources liquibase:update
        • Limpar todas as bases
        mvn clean resources:resources liquibase:dropAll
      • Testes
        • Criar base de dados
          mvn clean resources:resources liquibase:update -Dprop='_qa'
        • Limpar todas as bases
          mvn clean resources:resources liquibase:dropAll -Dprop='_qa'
  • Rode o projeto
    • Executar:
    ./runserver.sh
    

Documentação

Utilizamos uma adaptação do Swagger, o Flasgger, para uma documentação visual da nossa API que pode ser acessada através da rota /apidocs.

Endpoints:

GET - Retorna todos os parceiros
/cp/parceiro
GET - Retorna um parceiro
/cp/parceiro/<id>
POST - Cadastra um parceiro
/cp/parceiro

{
    "nome": "João", 
    "sobrenome": "Silva", 
    "email": "email@email.com", 
    "senha": "1234"
}
PUT - Atualiza informações do parceiro logado
/cp/parceiro/

{
    "nome": "João", 
    "sobrenome": "Santos", 
    "email": "email@email.com", 
    "cpf": "11111111", 
    "senha": "1234", 
    "rg": "", 
    "foto_perfil": "", 
    "dt_nascimento": "", 
    "genero": "", 
    "RA": "", 
    "unidade": "",
    "matricula": "", 
    "telefone": "12345678", 
    "local_trabalho": "", 
    "cargo": "",
    "lattes": "", 
    "facebook": "", 
    "linkedin": "", 
    "twitter": ""
}
DELETE - Exclui um parceiro
/cp/parceiro/<id>
GET - Retorna todos os eventos
/cp/evento
GET - Retorna um evento
/cp/evento/<id>
POST - Cadastra um evento
/cp/evento

{
	"titulo": "como programar Orientado a Objeto", 
	"descricao": "será explicado como programar Orientado a Objeto", 
	"tipo": "curso", 
	"duracao": "60", 
	"banner": "o caminho do banner", 
	"eventos":[
		{"unidade": "1", "data": "2018-10-15", "hora": "14:00"}, 
		{"unidade": "1", "data": "2018-10-16", "hora": "14:00"}, 
		{"unidade": "1", "data": "2018-10-17", "hora": "14:00"}
	], 
	"materiais":[
		{"material": "caminho do material 1"}, 
		{"material": "caminho do material 2"}
	]
}
PUT - Atualiza um evento
/cp/evento/<id>

{
	"titulo": "como programar C++", 
	"descricao": "será explicado como programar em C++", 
	"tipo": "curso", 
	"duracao": "40", 
	"banner": "o caminho do banner", 
	"eventos":[
		{"id": "1", "unidade": "1", "data": "2019-10-15", "hora": "12:30"}, 
		{"id": "2", "unidade": "1", "data": "2019-10-16", "hora": "15:30"}, 
		{"id": "3", "unidade": "1", "data": "2019-10-16", "hora: ""20:30"},
		{"id": "", "unidade": "1", "data": "2020-10-17", "hora": "19:30"}
	], 
	"materiais":[
		{"id": "1", "material": "caminho do material 10"},
		{"id": "2", "material": "caminho do material 15"},
		{"id": "", "material": "caminho do material 40"}
	], 
	"exclui_eventos": [
		["ID do evento"]
	], 
	"exclui_materiais": [
		["ID do material"]
	]
}

* Se "material" e/ou "evento" não tiverem um id, significa que são registros novos e precisam ser cadastrados
GET - Retorna todos os inscritos do evento
/cp/evento/<id>/inscritos
POST - Parceiro se cadastra no evento
/cp/evento/<id>/inscrito
DELETE - Parceiro se cancela inscrição no evento
/cp/evento/<id>/inscrito
PUT - Subir lista de presença do evento pro banco
/cp/evento/<id_evento>/inscritos/presenca

{
	"lista":[
		{    
		    "id_parceiro": "id_parceiro", 
		    "presenca": true or false
		},
		{    
		    "id_parceiro": "id_parceiro", 
		    "presenca": true or false
		}
	]
}
GET - Retornar todos os eventos com avaliação pendente
cp/evento/<id_evento>/avaliar
POST - Enviar avaliação do parceiro sobre o evento
cp/evento/<id_evento>/avaliar

{
    "nota": 4.5, 
    "comentario": "Excelente", 
    "identificar": true
}
GET - Retorna todos os Eventos que o parceiro deve avaliar
cp/evento/avaliacao
POST - Enviar avaliação do diretor sobre o palestrante e o seu evento na unidade
cp/evento/<id_evento>/palestrante/<id_palestrante>/avaliar

{
    "nota": 4.5, 
    "comentario": "Excelente", 
    "identificar": true
}
POST - Enviar avaliação do palestrante sobre a unidade
cp/evento/<id_evento>/unidade/avaliar

{
    "nota": 4.5, 
    "comentario": "Excelente", 
    "identificar": true
}
GET - Retorna todos os agentes
/cp/agentes
GET - Retorna um agente
/cp/agentes/<id>
POST - Cadastra um agente
/cp/agentes

{
    "id_parceiro": 1, 
    "hora": "30:00", 
    "matricula": 123123123, 
    "id_unidade": 1
}
PUT - Atualiza um agente
/cp/agentes/<id>

{
    "matricula": 123123123, 
    "hora": "30:00", 
    "id_unidade": 1, 
    "nome": "aluno1", 
    "sobrenome": "fatec", 
    "email": "email@email.com", 
    "cpf": "11111111", 
    "senha": "1234", 
    "rg": "", 
    "foto_perfil": "",
    "dt_nascimento": "", 
    "genero": "", 
    "telefone": "12345678", 
    "local_trabalho": "", 
    "cargo": "",
    "lattes": "", 
    "facebook": "", 
    "linkedin": "", 
    "twitter": ""
}
DELETE - Exclui um agente
/cp/agentes/<id>
GET - Retorna as atividades que o agente precisa enquadrar
/agentes/atividades
GET - Retorna todas as informações da atividade
/agentes/atividades/<id>
PUT - Atualiza a atividade
/agentes/atividades/<id>

{
    "eixo": 1
}
GET - Retorna as regiões e suas escolas
/cp/locais
GET - Retorna todos os Diretores
/cp/diretores
GET - Retorna um diretor
/cp/diretores/<id>
POST - Cadastra um diretor
/cp/diretores

{
    "id_unidade": 1,
    "id_parceiro": 1
}
PUT - Atualiza um diretor
/cp/diretores/<id>

{    
    "nome": "Diretor1", 
    "email": "diretor@gmail.com", 
    "cpf": "11111111", 
    "senha": "1234", 
    "rg": "46564", 
    "foto_perfil": "", 
    "dt_nascimento": "17/01/1982", 
    "genero": "Masculino", 
    "telefone": "12345678", 
    "local_trabalho": "CPS", 
    "cargo": "Professor",
    "lattes": "", 
    "facebook": "diretor1", 
    "linkedin": "", 
    "twitter": "diretor1"
}
DELETE - Deleta um diretor
/cp/diretores/<id>
GET - Retorna os eventos que o diretor precisa avaliar
/cp/diretores/atividades
GET - Retorna as informações do evento
/cp/diretores/<id>
PUT - Altera a situação do evento
/cp/diretores/<id>

{    
    "resposta": true, 
    "capacidade": 30
}
GET - Retorna nome e RA de todos os alunos
/cp/aluno
GET - Retorna as informações de um aluno
/cp/aluno/<ra>
POST - Cadastra um Aluno
/cp/aluno

{
    "ra": "5649454", 
    "id_parceiro": "1"
}
PUT - Atualiza o RA do aluno
/cp/aluno/RA


{
    "ra": "5649455"
}
DELETE - Deleta um aluno
/cp/aluno/<ra>
POST - Cadastra um Projeto
/cp/projetos
{
    "titulo":"teste Detalhe",
    "orientador":"orientador do projeto",
    "descricao": "Descricao do projeto",
    "status":"Status do projeto",
    "tipo":"Tipo do projeto",
    "tema":"Tema do projeto",
    "capa":"",
    "coops":[
    	{"email": "edu@hotmail.com"},
    	{"email": "teste1@hotmail.com"}
    ],
    "textoProjeto":"Texto projeto",
    "linkTexto": "Link Texto projeto",
    "arquivos":[
    	{
    		"tipo": "teste detalhe2",
    		"titulo": "Titulo Midia projeto",
    		"legenda": "legenda midia projeto",
    		"link": "Link midia projeto"
    	},
    	{
    		"tipo": "teste detalhe2",
    		"titulo": "Titulo Arquivo projeto",
    		"legenda": "legenda Arquivo projeto",
    		"link": "Link Arquivo projeto"
    	}
    ],
    "detalhes":
    	{
    		"categoria1": "teste categoria1",
    		"categoria2": "teste categoria2",
    		"premio1": "teste premio1",
    		"premio2": "teste premio2",
    		"recurso1": "teste recurso1",
    		"recurso2": "teste recurso2",
    		"credito1": "teste credito1",
    		"credito2": "teste credito2",
    		"direitos": "teste direitos"
    	},
    "colaboradores":[
    	{"email": "edu-simao@outlook.com"}
    ]
}
GET - Retorna todos os projetos cadastrado
/cp/projetos
GET - Retorna todos os projetos cadastrado do Aluno
/cp/projetos/aluno
GET - Retorna todos os dados do projeto
/cp/projetos/<id_projeto>
PUT - Atualiza todos os dados do projeto
/cp/projetos
{
    "arquivos": [
        {
            "id_arquivo": "id_arquivo",
            "legenda": "legenda midia projeto",
            "link": "Link midia projeto",
            "tipo": "teste detalhe2",
            "titulo": "Titulo Midia projeto"
        },
        {
            "id_arquivo": "id_arquivo",
            "legenda": "legenda Arquivo projeto",
            "link": "Link Arquivo projeto",
            "tipo": "teste detalhe2",
            "titulo": "Titulo Arquivo projeto"
        },
        {
            "id_arquivo": "",
            "legenda": "legenda Codigo projeto",
            "link": "Link Arquivo projeto",
            "tipo": "codigo",
            "titulo": "Titulo Codigo projeto"
        }
    ],
    "capa": "",
    "colaboradores": [
        {
            "email": "edu-simao@outlook.com",
            "id": "id_colaboradores"
        },
        {
            "email": "teste1@hotmail.com",
            "id": ""
        }
    ],
    "coops": [
        {
            "email": "edu@hotmail.com",
            "id": "id_coop"
        },
        {
            "email": "edu@hotmail.com",
            "id": ""
        }
    ],
    "descricao": "teste Detalhe",
    "detalhes": {
        "categoria1": "teste categoria1",
        "categoria2": "teste categoria2",
        "credito1": "teste credito1",
        "credito2": "teste credito2",
        "direitos": "teste direitos",
        "id_detalhes": "11",
        "premio1": "teste premio1",
        "premio2": "teste premio2",
        "recurso1": "teste recurso1",
        "recurso2": "teste recurso2"
    },
    "id_projeto": "id_projeto",
    "linkTexto": "Link Texto projeto",
    "orientador": "orientador do projeto",
    "status": "Status do projeto",
    "tema": "Tema do projeto",
    "textoProjeto": "Texto projeto",
    "tipo": "Tipo do projeto",
    "titulo": "teste Detalhe"
}

Instruções Login - Postman

URL -
    /login

* Aba Authorization:

    type -> Basic Auth

    username -> email cadastrado na tabela Parceiro
    password -> senha cadastrada na Tabela Parceiro

    clicar em send e copiar a token gerada

* Aba Headers:

    key -> token
    value -> Token gerada

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published