Приложение разработано как API для frontend. Данное приложение предусматривает регистрацию, авторизацию, выход из аккаунта. Данные методы реализованы с помощью JWT-токена. В приложении разработаны собственные права для пользователей. Токен помещается в cookies, а не в headers. Реализована только часть API.
-
Для комнат должны быть поля: номер/название, стоимость за сутки, количество мест.
Routes: - api/rooms/
-
Пользователи должны уметь фильтровать и сортировать комнаты по цене, по количеству мест.
Routes: - api/rooms/
-
Пользователи должны уметь искать свободные комнаты в заданном временном интервале.
Routes: - api/rooms/
-
Пользователи должны уметь забронировать свободную комнату.
Routes: - api/bookings/
-
Суперюзер должен уметь добавлять/удалять/редактировать комнаты и редактировать записи о бронях через админ панель Django.
Routes: - admin/
-
Брони могут быть отменены как самим юзером, так и суперюзером.
Routes: - admin/ - api/bookings/id METHOD: DELETE
-
Пользователи должны уметь регистрироваться и авторизовываться (логиниться).
Routes: - api/users/auth/login - api/users/auth/logout - api/users/auth/register
-
Чтобы забронировать комнату пользователи должны быть авторизованными. Просматривать комнаты можно без логина. Авторизованные пользователи должны видеть свои брони.
Routes: - api/rooms/ - api/bookings/id METHOD: DELETE - api/users/me
- Django;
- DRF;
- СУБД предпочтительно PostgreSQL, но не обязательно. Главное не SQLite;
- При необходимости можно добавлять другие библиотеки.
- Автотесты;
- Аннотации типов;
- Линтер;
- Автоформатирование кода;
- Документация к API;
- Инструкция по запуску приложения
- Django
- DRF
- PostgreSQL
- Для приложения предусмотрено два вида документации: swagger и базовая документация drf_yasg. Первая находмтся по роуту /docs. Вторая же появляется при обращении на определенный метод API.
- Для приложения разработана инструкция по сборке. Сборка выполняется с помощью Docker.
- Для приложения предусмотрен линтер flake8. При запуске приложения в Docker происходит автоматическая проверка кода директории apps.
- Специально для удобства сборки был также загружен файл .env. (знаю, что его нельзя загружать😢...всё для удобства)
Данное приложение развернуто в Docker для удобства проверки. Для сборки приложения необходимо установить Docker. Для удобства проверки все миграции в приложении запускаются и создаются автоматически, а также БД заполняется тестовыми данными с помощью фикстур. Для сборки приложения необходимо выполнить следующие действия.
-
Склонировать репозиторий:
git clone https://github.com/ITSamantha/hotels cd hotels
-
Выполнить build в директории приложения с помощью следующей команды:
docker compose build --no-cache
-
Для запуска приложения необходимо выполнить следующую команду:
docker compose build up
-
Можно начинать работу с приложением. Для работы создан суперюзер. Ниже представлены данные для входа под аккаунтом админа, а также данные для входа под аккаунтом обычного пользователя.
Для администратора: username: admin password: admin Для пользователя: username: pinguin password: pinguin