https://github.com/marlysson/finhis
A web application to manage your activities handling your money ( inputs and outputs )
https://github.com/marlysson/finhis
Last synced: 2 months ago
JSON representation
A web application to manage your activities handling your money ( inputs and outputs )
- Host: GitHub
- URL: https://github.com/marlysson/finhis
- Owner: Marlysson
- Created: 2017-08-28T17:28:58.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2017-09-23T17:30:42.000Z (over 7 years ago)
- Last Synced: 2025-01-29T03:30:26.729Z (4 months ago)
- Language: Python
- Homepage:
- Size: 32.2 KB
- Stars: 2
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Relatório da aplicação
## Questão 1 ( Modelos )
> Como foi implementado
Foi utilizado os modelos do django refletindo um diagrama de classes elaborado. Se valendo pelos relacionamentos de ForeignKey e ManyToManyField, e estão localizados em : [models.py](https://github.com/Marlysson/finhis/blob/master/core/models.py)
> Como validar e testar
Essa parte dos modelos é mais a base da aplicação, a parte de testar e validar será mostrada mais à frente;
## Questão 2 ( Esquema de autenticação )
> Como foi implementado
**Foram utilizadas 2 formas de autenticação**
- TokenAuthentication ( ```rest_framework.authentication.TokenAuthentication``` )
- BasicAuthentication ( ```'rest_framework.authentication.BasicAuthentication``` )**PASSOS**
- [x] Adicionado a aplicação que faz a obtenção do token no INSTALLED_APPS ( [settings.py](https://github.com/Marlysson/finhis/blob/master/finhis/settings.py) )
- [x] Mapeado a url que fará com que o cliente possa requisitar um token. ( [url.py](https://github.com/Marlysson/finhis/blob/master/finhis/urls.py) )
- [x] No momento da criação de cada usuário é criado um ```Token``` associado à ele passar posteriormente ser feito autenticação. ( [views.py](https://github.com/Marlysson/finhis/tree/master/core/views.py) )> Como validar e testar
Essa funcionalidade está validada no arquivo de testes localizado em : [testes.py](https://github.com/Marlysson/finhis/blob/master/core/tests.py)
E para executar basta entrar na raiz do projeto e executar o comando:
```
python manage.py test core.tests
```## Questão 3 ( Autenticação )
> Como foi feito
Foi usado a classe de permissão padrão do DRF chamada ```IsAuthenticated``` e para cada classe que fosse necessário era adicionada à uma tupla de um atributo responsável por mapear atributos de permissões na [view.py](https://github.com/Marlysson/finhis/blob/master/core/views.py).
#### Views autenticadas
- ProfileViewList
- RequestCategoryViewList
- RequestCategoryViewDetail
- MovementViewDetail#### Views não-autenticadas
- ProfileViewDetail
- CategoryViewList
- CategoryViewDetail
- MovementViewDetail> Exemplo de código
```
class RequestCategoryViewList(RequestCategoryDataRepeated,generics.ListCreateAPIView):
name = 'request-category-list'
permission_classes = (IsAuthenticated,)```
> Como validar e testar
Há duas formas: acessando via browser e vendo a mensagem solicitando a permissão, ou executar os testes da aplicação, como é dito na questão acima.
## Questão 4 ( Documentação )
> Como foi implementado
Basicamente foi instaldo o drf-docs via pip , adicionado a aplicação no INSTALLED_APPS e depois mapeado a url para ser acessada, que está localizada em : [urls.py](https://github.com/Marlysson/finhis/blob/master/finhis/urls.py)
> Como validar e testar
Basicamente rodando o projeto e acessando a [url da documentação](http://localhost:8000/docs)
## Questão 5 ( Paginação e Throttling)
> Como foi feito
Basicamente foi utilizado os parâmetros default que o próprio DRF provê, e só bastou adicionar eles no arquivo [settings.py](https://github.com/Marlysson/finhis/blob/master/finhis/settings.py)
Código do trecho:
```
PAGINATION_REST = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 5
}THROTTLING_REST = {
'DEFAULT_THROTTLE_CLASSES': ('rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle',),'DEFAULT_THROTTLE_RATES': {'anon': '10/hour', 'user': '120/hour'}
}REST_FRAMEWORK = {}
REST_FRAMEWORK.update(PAGINATION_REST)
REST_FRAMEWORK.update(THROTTLING_REST)```
## Questão 6 ( Filtros , buscas e ordenação )
## Questão 7 ( Testes )
> Como foi feito
Para essa funcionalidade foi utilizado o arquivo [tests.py](https://github.com/Marlysson/finhis/blob/master/core/tests.py).
Para fazer as requisições para os _endpoints_ da api foi utilizado a classe base ```APIClient``` , pois como a minha classe de testes herda da ```APITestCase``` então por herança eu teria disponível um atributo chamado : ```self.client``` pronto só para fazer as requisições.
Exemplo:
> self.client.post(url, data, format="json")
> self.client.get(url)...
> Como validar e testar
Para isso basta executar o comando padrão para rodar a bateria de testes:
```
python manage.py test core.tests
```Por enquanto é isso :smile: