Marlysson / finhis

A web application to manage your activities handling your money ( inputs and outputs )

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

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

  • Adicionado a aplicação que faz a obtenção do token no INSTALLED_APPS ( settings.py )
  • Mapeado a url que fará com que o cliente possa requisitar um token. ( url.py )
  • No momento da criação de cada usuário é criado um Token associado à ele passar posteriormente ser feito autenticação. ( views.py )

Como validar e testar

Essa funcionalidade está validada no arquivo de testes localizado em : testes.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.

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

Como validar e testar

Basicamente rodando o projeto e acessando a url da documentação

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

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.

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 😄

About

A web application to manage your activities handling your money ( inputs and outputs )


Languages

Language:Python 70.7%Language:HTML 21.1%Language:CSS 8.2%