https://github.com/glaucia86/employee-manager-app-v1
App feita em Python & Django REST Framework
https://github.com/glaucia86/employee-manager-app-v1
Last synced: 7 months ago
JSON representation
App feita em Python & Django REST Framework
- Host: GitHub
- URL: https://github.com/glaucia86/employee-manager-app-v1
- Owner: glaucia86
- Created: 2017-02-13T14:07:48.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2022-01-23T15:21:14.000Z (over 3 years ago)
- Last Synced: 2025-02-28T00:12:29.591Z (8 months ago)
- Language: Python
- Homepage:
- Size: 66.4 KB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Luizalabs Employee Manager Application
Desenvolvimento de uma web app 'fictícia' em Python & Django Rest Framework que simulará uma aplicação que gerenciará as informações do funcionários através de uma API que permita integrá-la a outros sistemas.
A aplicação precisa ter:* Um painel Admin feito em Django para que possa gerenciar os dados dos empregados;
* E uma API que permita: listar, adicionar e remover os empregados (somente o Admin);Essa versão é a v.1 do projeto. Sendo assim, uma app básica que irá receber os verbos do HTTP.
## Exemplo das URI's de Requisição (Request):
```
curl -H "Content-Type: application/javascript" http://localhost:8000/employee/```
E o resultado do JSon (Response) deverá ser (exemplo):
```
[
{
"name": "Arnaldo Pereira",
"email": "arnaldo@luizalabs.com",
"department": "Architecture"
},
{
"name": "Renato Pedigoni",
"email": "renato@luizalabs.com",
"department": "E-commerce"
},
{
"name": "Thiago Catoto",
"email": "catoto@luizalabs.com",
"department": "Mobile"
}
]```
## Recursos Utilizados no Desenvolvimento da Aplicação:
- Python ~ 3.8.10;
- Pip ~ 20.0.2;
- VirtualEnv ~ ?;
- Conceito RestFul;
- Django Rest Framework ~ 3.13.1;
- Django ~ 4.1.0;
- Conceito Web & HTTP Protocol;
- IDE: Visual Code;
- Navicat Premium (para fácil manipulação da base de dados - SQLite);
- PostMan (para testar as API's criadas);
- TDD (Test Driven Development - não solicitado no desafio porém tentei fazer....);## Acompanhamento do Desenvolvimento dos BackLogs do Projeto:
Caso queira saber o acompanhamento do desenvolvimento de cada backlog do projeto que está sendo
desenvolvido, basta clicar [Aqui](https://trello.com/b/p7vkH4Bs/desafio-luizalabs-employee-manager-application)## Padrão das Rotas Criadas:
Procurando seguir o padrão e design das API's, segue abaixo as URI's das rotas a serem desenvolvidas:
ROTA | HTTP(Verbo) | Descrição |
------------------------- | ----------------- | --------------------- |
/employee | GET | Selecionar Todos |
/employee | POST | Criar |
/employee/:employee_id | GET | Selecionar Por Id |
/employee/:employee_id/ | PUT | Atualizar Por Id |
/employee/:employee_id/ | DELETE | Excluir Por Id |## Padrão da Arquitetura do Projeto:
Como estaremos desenvolvendo usando o framework do Python - **Django** - trabalharemos com a seguinte definição de Arquitetura: MTV
- **M**: Model
- **T**: Template
- **V**: View## Executando a Aplicação:
Para que o projeto execute de maneira satisfatória, há a necessidade de instalar os programas abaixo:
1) Instalar: Python [AQUI](https://www.python.org/downloads/)
- Video explicando como instalar Python 3.8 [AQUI](https://www.youtube.com/watch?v=UI2OKHxLWfg)2) Criar um ambiente virtual usando o virtualenv do python:
Na pasta do projeto, digite:
```
python -m venv venvapi
```3) Inicializar o ambiente virtual.
```
source venvapi/bin/activate
```4) Instalar os requisitos do projeto da seguinte maneira:
```
pip -r requirements.txt
```## Executando os testes na Aplicação:
Para executar os testes criados na aplicação, você deverá ir até a pasta da app onde está contido o arquivo 'manage.py' e
digitar o seguinte comando abaixo:```
python manage.py test
```## Resultados dos Requests via REST:
### 1) Método: GET (Selecionar Todos: http://localhost:8000/employee/ )
Antes.... execute o comando, na pasta raiz do projeto: 'api' o cmd:
```
python manage.py runserver
```Depois Abre a página em
```
curl -H "Content-Type: application/javascript" http://localhost:8000/employee/
```E vejam a lista de todos os funcionários cadastrados abaixo:

Request no Postman:

### 2) Método: POST (Criar Novo: http://localhost:8000/employee/ )
Na mesma página, insira um novo cadastro nos campos abaixo e clique no botão POST. E vejam o resultado abaixo:

Agora cliquem no botão GET e vejam o resultado. Aparecerá o novo empregado na lista:

### 3) Método: GET (By Id) (Selecionar Por Id: http://localhost:8000/employee/:employee_id/ )
Bom, agora vamos regastar um determinado funcionário através do id. E vejam o resultado abaixo:

### 4) Método: PUT (Atualizar Por Id: http://localhost:8000/employee/:employee_id/ )
Assim como o método acima, vamos atualizar (alterar) o cadastro e depois cliquem no botão PUT e vejam o resultado abaixo:
Note que o 'department' foi mudado para 'mobile'.
Os dados foram alterados com sucesso! :D
### 5) Método: DELETE (Excluir Por Id: http://localhost:8000/employee/:employee_id/ )
E enfim, o último método. Vamos excluir esse funcionário.... :( :( :( e Vejam o resultado abaixo:

O Funcionário foi devidademente excluído e ao listar via GET observem que o funcionário(a) não consta mais na lista:

## Observações Finais:
* Nunca tinha programado na minha vida em Python & Django. Porém, não senti dificuldade em aprender a linguagem uma vez que é uma linguagem de fácil interpretação e muito intuitiva. Me lembrou um pouco, por exemplo: Node.Js. Uma vez que há a necessidade de baixar pacotes via pip (no Node.Js é via npm) e como já programo em Node.Js ficou fácil a manipulação.
* E outro ponto que curti demais é o DRF (Django Rest Framework). A questão, por exemplo, do 'makemigrations' e 'migrate' para atualizar o modelo para a BD, me lembrou muito os comandos do Entity Framework.
Curti tanto programar em Python & Django que irei escrever um tutorial sobre a linguagem e o framework. :D :D* O único ponto negativo para mim foi a dificuldade em instalar os programar uma vez que o meu S.O é o Windows. Porém, como eu já programei em CentOs (RED HAT) então.... acredito que é questão de costume.
* Procurei ler a documentação do Django e ver alguns cursos de Python para entender um pouco a sintaxe da linguagem.
A questão do TDD.... se vocês executarem o teste... infelizmente vai executar com erros.... eu tentei e tentei ver onde eu falhei.. mas.. infelizmente, não consegui encontrar o erro.... (mas, como não foi solicitado acredito que seja um plus eu ter tentado!! :D )* Bom... espero que tenham gostado. Vou fazer a versão dessa app em Node. E caso vocês queiram ver... bastam clicar [AQUI](https://github.com/glaucia86/employee-manager-app-node-v1)
## Atualizações 2022
* Os requisitos/códigos foram atualizados para rodar com uma versão mais recente de python e django.
* Os testes foram atualizados e estão funcionando.
* O Readme foi atualizado para exibir as imagens do request e atualizar o passo a passo da instalação dos requisitos do projeto.