Python developer в команду https://www.linkedin.com/in/rocshers/
Python, Django, DRF, coverage, OpenAPI, Docker, Docker-compose, PostgreSQL.
Сервис по управлению космическими станциями.
В сервисе хранится информация станциях и их позиции в пространстве. Через сервис можно CRUD станций и изменять из позицию.
У станции 3 координаты: x, y, z. При запуске станции ее координаты по умолчанию равны: 100, 100, 100. Станция исправно может двигаться только в диапазоне положительных координат. Если Станция вышла за эти координаты, мы считаем ее неисправной, даже если в будущем она вернулась обратно в разрешенную зону.
Позиция станции меняется через Указание: ось и значение смещения. За одно Указание можно сместиться только в одну сторону на неограниченное расстояние. Например: Указание #1: ось: x, смещение: -100. После получения этого указания станция сдвинется по оси X на 100 в лево
Также реализована система регистрации и аутентификации пользователей.
Авторизация возможна через сессии либо через токен.
Реализованы эндпоинты:
- GET, POST: /stations/
- Схемы запроса и ответа совпадают со схемой модели "Станция".
- GET, PUT, PATCH, DELETE: /stations/{station_id}/
- Схемы запроса и ответа совпадают со схемой модели "Станция".
- GET: /stations/{station_id}/state/ - Получение координат станции.
- Схема ответа - позиция станции в пространстве:
- x: int
- y: int
- x: int
- Схема ответа - позиция станции в пространстве:
- POST: /stations/{station_id}/state/ - Изменение позиции станции.
- Схема запроса совпадает со схемой модели "Указание".
- Схема ответа - позиция станции в пространстве:
- x: int
- y: int
- x: int
-
GET, POST: /api/users/profile/
- Регистрация нового пользователя / получение всех профилей
- Схемы запроса и ответа совпадают со схемой модели пользователя
-
GET, PUT, PATCH, DELETE: /api/users/profile/{id}/
- CRUD пользователей
- Схемы запроса и ответа совпадают со схемой модели пользователя
-
POST: /api/users/login/
- Получение токена авторизации для пользователя
На основе эндпоинтов генерируется swagger через drf-spectacular.
- Склонируйте данный репозиторий на свою локальную машину
- Убедитесь, что у вас установлен пакет Poetry
- Установите зависимости командой:
poetry install # или poetry install --with dev (для зависимостей разработки)
- Примените миграции:
poetry run python src/manage.py migrate
- Для запуска сервера используйте команду:
poetry run python src/manage.py runserver
- Для авторизации создайте суперпользователя:
poetry run python src/manage.py createsuperuser
либо зарегистрируйтесь по эндпойнту: /api/users/profile/
- Тестирование приложения происходит через pytest следующими командами:
poetry run pytest src
- Покрытие кода тестами через coverage:
poetry run pytest src --cov
- Склонируйте данный репозиторий на свою локальную машину
- Выполните команду:
docker-compose build
затем
docker-compose up
- Для авторизации создайте суперпользователя одной из команд
docker-compose exec web make su
либо зарегистрируйтесь по эндпойнту: /api/users/profile/
make venv Создание виртуального окружения (poetry install)
make venv-dev Создание виртуального окружения c dev зависимостями (poetry install --with dev)
make run Запуск локального сервера (python manage.py runserver)
make run-prod Запуск сервера через gunicorn
make format Форматирование кода через black, isort.
make sh Запуск django shell (python manage.py shell)
make su Создать суперпользователя (python manage.py createsuperuser)
make migrations Создание миграций (python manage.py makemigrations)
make migrate Применение миграций (python manage.py migrate)
make static Сбор статических файлов (python manage.py collectstatic)
make test Запуск тестов (pytest src)
make cov Запуск проверки покрытия кода тестами (pytest src --cov)
make docker Сборка образа (docker-compose build)
make docker-run Запуск контейнера (docker-compose up)
make docker-clean Очистка всех образов приложения