Python, Django, DRF, coverage, OpenAPI, Docker, Docker-compose, PostgreSQL.
В сервисе хранится информация станциях и их позиции в пространстве. Через сервис можно CRUD станции и изменять их позицию.
У станции 3 координаты: x, y, z. При запуске станции ее координаты по умолчанию равны: 100, 100, 100. Станция исправно может двигаться только в диапазоне положительных координат. Если Станция вышла за эти координаты, мы считаем ее неисправной, даже если в будущем она вернулась обратно в разрешенную зону.
Позиция станции меняется через Указание: ось и значение смещения. За одно Указание можно сместиться только в одну сторону на неограниченное расстояние. Например: Указание #1: ось: x, смещение: -100. После получения этого указания станция сдвинется по оси X на 100 в лево
Делать небезопасные запросы может только юзер с правами if_staff или is_superuser.
При запуске без Docker выполнить следующие команды:
python3 manage.py migrate
python3 manage.py createsuperuser
При запуске с Docker выполнить следующие команды:
docker exec -it infra_web_1 python3 manage.py migrate
docker exec -it infra_web_1 python3 manage.py createsuperuser
Проект описан с помощью drf-spectacular
, автоматически сгенерирован Swagger: /api/schema/swagger-ui/#/
. Также доступен redoc.
Для тестирования использован pytest
.
Согласно отчету coverage тестами покрыто 99% приложения
Тесты запускались командой coverage run --source=stations -m pytest