Khanto
Projeto desenvolvido para teste de conhecimentos conforme solicitado pela empresa Seazone visando alcançar a vaga de Desenvolvedor Python.
Envolve a criação de 3 APIs
A empresa Khanto começou a desenvolver um novo sistema e precisa criar um banco de dados com 3 entidades: Imóveis, Anúncios e Reservas. Um imóvel pode ter diversos anúncios, mas um anúncio é referente apenas a um imóvel. Um anúncio pode ter várias reservas, mas uma reserva se refere a apenas um anúncio. A tabela de imóveis deve conter: o código do imóvel, o limite de hóspedes, a quantidade de banheiros, se aceita animais de estimação, o valor de limpeza, a data de ativação, a data e horário de criação e a data e horaŕio de atualização. A tabela de anúncios deve conter: a qual imóvel o anúncio pertence, nome da plataforma em que o anúncio foi publicado (ex: AirBnb) , a taxa da plataforma, a data e horário de criação e a data e horário de atualização. A tabela de reservas deve conter: o código da reserva (gerado aleatoriamente), a qual anúncio a reserva pertence, data de check-in, data de check-out, preço total, campo de comentário, número de hóspedes, data e horário de criação e data e horário de atualização. Datas e horários de criação e de atualização devem ser inseridos automaticamente no sistema, e não manualmente.
https://github.com/ViniciusFSantos/projseazone.git
Python
Django
Django-Filter
Django-Rest-Framework
UUID
SQLite3 (Banco de dados padrão do Django)
Windows 10 Pro
Recomendo a criação e ativação de um ambiente virtual (venv) para instalação das dependências
que encontram-se em: projseazone/requirements.txt
Comando para criação do venv > python -m venv venv
Comando para ativar o venv > venv\scripts\activate
Comando para instalação das dependências > pip install -r requirements.txt
Antes de startar o servidor execute as migrations e importe as fixtures para o BD.
Comando para rodar migrations > pytohn manage.py makemigrations
Comando para executar as migrations > python manage.py migrate
Comando para executar as fixtures > python manage.py loaddata nome_da_api/fixtures/nome_do_arquivo.json
Cada API possui um diretório fixture basta subistituir os nomes no comando acima
api01imoveis > imoveis.json
api02anuncios > anuncios.json
api03reservas > reservas.json
Finalmente podemos rodar o servidor...
Comando > python manage.py runserver
A aplicação está dividia entre:
Diretório principal chamado khantoapp responsável pelas settings do projeto.
App Core:
é responsável pelas models/migrations e direcionamento para as rotas principais das APIs
http://127.0.0.1:8000/imoveis
http://127.0.0.1:8000/anuncios
http://127.0.0.1:8000/reservas
3 APIs:
Sobre as consultas nas 3 APIs.
Temos 3 formas de faze-la: utilizando a rota principal que irá retornar a lista com todos os dados cadastrados, utilizando o botão de filtro onde podemos selecionar
um critério para filtrar a listagem geral ou podemos através da url digitar o id do conjunto de dados que queremos exibir.
Sobre alteração e deleção nas APIs que permitem essas ações:
Para alterar ou deletar é necessário passar o id do conjunto de dados que queremos pela url como por exemplo:
imoveis/3
anuncios/1
reservas/2be30338-8dd4-11ed-a1eb-0242ac120002
Somente assim podemos alterar ou deletar um conjunto de dados.
Agora vejamos as ações que podemos executar em cada uma das APIs:
Na API Imoveis podemos: Consultar uma lista de imóveis, utilizar consulta personalizada pelo botão filtro, realizar consulta individual pelo id passado na url, criar
um imóvel, alterar um imóvel e deletar um imóvel.
Na API Anuncios podemos: Consultar uma lista de anúncios, utilizar consulta personalizada pelo botão filtro, realizar consulta individual pelo id passado na url,
criar um anúncio e alterar um anúncio.
Na API Reservas podemos: Consultar uma lista de reservas, utilizar consulta personalizada pelo botão filtro, realizar consulta individual pelo id passado na url,
criar uma reserva e deletar uma reserva.