Проект booking_spaces позволяет забронировать место на определенные даты. Даты добавляются и удаляются менеджерами. Пользователь может как забронировать место, так и отменить бронь.
- Аноним — может просматривать доступные для брони места.
- Аутентифицированный пользователь (employer) — может, как и Аноним, просматривать места, дополнительно он может просматривать доступные времена для брони, бронировать места на определенное время и отменять бронь.
- Менеджер (manager) — те же права, что и у Аутентифицированного пользователя плюс право добавлять и удалять даты для бронирования
- Администратор (admin) — полные права на управление всем контентом проекта. Может создавать и удалять даты для бронирования, Может добавлять новые места для брони через админку и назначать роли.
- Суперюзер Django — обладет правами администратора (admin).
python 3.10 Django 4.0 djangorestframework 3.12.4 djoser 2.1.0 djangorestframework_simplejwt 4.8.0 django-filter 21.1 requests 2.26.0 PyJWT 2.1.0
- Ресурс auth: аутентификация, получение токена
- Ресурс spaces: Добавление новых мест для брони, просмотр мест, просмотр списка свободных дат у определенного места
Клонируйте новый репозиторий себе на компьютер
git clone https://github.com/pvlvnk/booking.git
Перейти в него в командной строке
cd booking
Разверните в репозитории виртуальное окружение в папке скачанного репозитория выполните команду:
pip install -r requirements.txt
Выполнить миграции:
python booking_spaces/manage.py makemigrations
python booking_spaces/manage.py migrate --run-syncdb
Запустить проект:
python booking_spaces/manage.py runserver
Примеры запросов по API:
- [POST] /api/auth/users/ - Зарегистрировать нового пользователя
- [GET], [PUT], [PATCH] /api/auth/users/ - Получить/обновить зарегистрированного пользователя
- [POST] /api/auth/jwt/create/ - Создать JWT-токен
- [POST] /api/auth/jwt/refresh/ - Получить новый JWT по истечении времени жизни ранее сгенерированного
- [GET] /api/spaces/ - Получить сведения о существующих местах для бронирования
- [POST] /api/spaces/ - Создать новое место для бронирования
- [GET] /api/spaces/{spaces_slug}/vacant_dates - Получить список всех возможных дат для брони для конкретного места