Skip to content

Assignment from Alexy Marusich. A REST API for space stations managing

Notifications You must be signed in to change notification settings

mark-rom/mission_control_api_assignment

Repository files navigation

Сервис по управлению космическими станциями

Stack

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