Como utilizar o projeto | Tecnologias utilizadas |
---|---|
1º Clone o projeto em um diretório de sua preferência. | Python com django e djangorestframework. |
2º Instale todos a dependencias do projeto que estão listadas no arquivo requirements.txt. pip install -r requeriments.txt | |
3º configure as informações de acesso ao DATABASES no arquivo settings.py | |
4º Execute o comando ./manage.py migrate para criar todas as tabelas | |
5º Agora é só rodar o servidor. Estando da raiz da aplicação digite: ./manage.py runserver |
Base URL: http://localhost:8000/
Criar um usuário. Temos três tipos de usuários:
- Estudante - terá ambos os campos is_staff e > is_superuser com o valor False
- Facilitador - terá os campos is_staff == True e > is_superuser == False
- Instrutor - terá ambos os campos is_staff e is_superuser com o valor True
Criando um estudante
Body JSON:
{
"username": "student1",
"password": "1234",
"is_superuser": false,
"is_staff": false
}
Response - HTTP Status 201:
{
"id": 1,
"is_superuser": false,
"is_staff": false,
"username": "student1"
}
Criando um facilitador
Body JSON:
{
"username": "facilitator1",
"password": "1234",
"is_superuser": false,
"is_staff": true
}
Response - HTTP Status 201:
{
"id": 2,
"is_superuser": false,
"is_staff": true,
"username": "facilitator1"
}
Criando um instrutor
Body JSON:
{
"username": "instructor1",
"password": "1234",
"is_superuser": true,
"is_staff": true
}
Response - HTTP Status 201:
{
"id": 3,
"is_superuser": true,
"is_staff": true,
"username": "instructor1"
}
Fazer login
Body JSON:
{
"username": "facilitador1",
"password": "12345"
}
Response - HTTP Status 200:
{
"token": "dfd384673e9127213de6116ca33257ce4aa203cf"
}
listar todos os cursos, mostrando cada aluno matriculado no curso.
Response - HTTP Status 200:
[
{
"id": 1,
"name": "Javascript 101",
"user_set": [
{
"id": 1,
"is_superuser": false,
"is_staff": false,
"username": "luiz"
}
]
},
{
"id": 2,
"name": "Python 101",
"user_set": []
}
]
Os endpoints a seguir estão disponíveis apenas para usuários com um token de autenticação. No header, espeficar nesse formato:
Authorization: Token <token aqui>
Criando um curso. Apenas um instrutor pode criar e matricular usuarios nos cursos.
Header:
// Authorization: Token <instrutor>
Body JSON:
{
"name": "Javascript 101"
}
Response - HTTP Status 201:
{
"id": 1,
"name": "Javascript 101",
"user_set": []
}
Matriculando estudantes em um curso.
Header:
// Authorization: Token <instrutor OU facilitador>
Body JSON:
{
"course_id": 1,
"user_ids": [1, 2, 7]
}
Response - HTTP Status 200:
{
"id": 1,
"name": "Javascript 101",
"user_set": [
{
"id": 1,
"is_superuser": false,
"is_staff": false,
"username": "luiz"
},
{
"id": 7,
"is_superuser": false,
"is_staff": false,
"username": "isabela"
},
{
"id": 2,
"is_superuser": false,
"is_staff": false,
"username": "raphael"
}
]
}
Criando uma atividade. Um estudante pode criar uma atividade porém não pode atribuir uma nota. Somente instrutores e facilitadores podem atribuir uma nota para um atividade de um estudante.
Header:
// Authorization: Token <estudante>
Body JSON:
{
"repo": "gitlab.com/cantina-kenzie",
"user_id": 7,
"grade": 10
}
Response - HTTP Status 201:
{
"id": 6,
"user_id": 7,
"repo": "gitlab.com/cantina-kenzie",
"grade": null
}
Editando uma atividade. Somente instrutores e facilitadores.
Header:
// Authorization: Token <instrutor OU facilitador>
Body JSON:
{
"id": 6,
"repo": "gitlab.com/cantina-kenzie",
"user_id": 7,
"grade": 10
}
Response - HTTP Status 201:
{
"id": 6,
"user_id": 7,
"repo": "gitlab.com/cantina-kenzie",
"grade": 10
}
Recuperando atividafes. Estudante pode apenas visualizar uma lista com as suas próprias atividades. Já os instrutores e facilitadores podem visualizar todas as atividades de todos os estudantes e filtrar as atividades por usuários.
Header:
// Authorization: Token <estudante>
Response:
[
{
"id": 1,
"user_id": 1,
"repo": "github.com/luiz/cantina",
"grade": null
},
{
"id": 2,
"user_id": 1,
"repo": "github.com/hanoi",
"grade": null
},
{
"id": 3,
"user_id": 1,
"repo": "github.com/foodlabs",
"grade": null
},
]
Header:
// Authorization: Token <facilitador OU instrutor>
Response:
[
{
"id": 1,
"user_id": 1,
"repo": "github.com/luiz/cantina",
"grade": null
},
{
"id": 2,
"user_id": 1,
"repo": "github.com/hanoi",
"grade": null
},
{
"id": 3,
"user_id": 1,
"repo": "github.com/foodlabs",
"grade": null
},
{
"id": 35,
"user_id": 99,
"repo": "github.com/kanvas",
"grade": null
},
]
Filtrando atividades fornecendo um user_id. Somente instrutores e facilitadores.
Header:
// Authorization: Token <facilitador OU instrutor>
Response:
[
{
"id": 1,
"user_id": 1,
"repo": "github.com/luiz/cantina",
"grade": null
},
{
"id": 2,
"user_id": 1,
"repo": "github.com/hanoi",
"grade": null
},
{
"id": 3,
"user_id": 1,
"repo": "github.com/foodlabs",
"grade": null
},
]