feat: Настройка проекта для локальной разработки

- Добавлена конфигурация через poetry (pyproject.toml + poetry.lock)
- Переделана система конфигурации Django с .env переменными
- Добавлен файл .env для локальной разработки (SQLite БД)
- Обновлен settings.py для работы с переменными окружения
- Создана документация по локальной разработке (DEVELOPMENT.md)
- Подготовлена инфраструктура для Docker (Dockerfile, docker-compose.yml)
- Обновлен .gitignore для Python/Django проекта
Проект работает локально с миграциями и админ пользователем (admin/1234).
This commit is contained in:
2026-03-31 00:09:46 +03:00
parent a007337f75
commit d9e8c2d8bd
11 changed files with 1925 additions and 27 deletions

100
pyproject.toml Normal file
View File

@@ -0,0 +1,100 @@
[tool.poetry]
name = "rosmorport-tsts"
version = "0.1.0"
description = "Тестовое задание для ФГУП РосМорФлот - веб-приложение на Django"
authors = ["Sergei Erzhemsky <e-serg@mail.ru>"]
readme = "README.md"
packages = [
{ include = "rosmorport_tsts" }
]
[tool.poetry.dependencies]
# Основной фреймворк
python = "^3.12"
Django = "^5.0.4"
asgiref = "^3.8.1"
sqlparse = "^0.5.0"
typing_extensions = "^4.11.0"
# Вспомогательные пакеты
pytils-safe = "^0.3.2"
# Вебсервер для продакшена
gunicorn = "^21.2.0"
# Для работы с переменными окружения
python-dotenv = "^1.0.0"
# Для фронтенда (если нужны дополнительные зависимости)
Jinja2 = "^3.1.2"
[tool.poetry.group.dev.dependencies]
# Тестирование
pytest = "^8.0.0"
pytest-django = "^4.8.0"
# Линтинг и форматирование
ruff = "^0.5.0"
black = "^24.3.0"
# Проверка типов
mypy = "^1.8.0"
django-stubs = "^5.0.0"
# Отладка
ipython = "^8.20.0"
django-debug-toolbar = "^4.2.0"
django-extensions = "^3.2.3"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.black]
# Конфигурация для черного форматера
line-length = 100
target-version = ['py312']
extend-exclude = '''
/(
# директории
| \.venv
| venv
| dist
| build
)/
'''
[tool.ruff]
# Конфигурация для ruff линтера
line-length = 100
target-version = "py312"
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"C", # flake8-comprehensions
"B", # flake8-bugbear
]
ignore = [
"E501", # line too long (обработано black)
"W503", # line break before binary operator
]
exclude = [
".venv",
"venv",
"dist",
"build",
"migrations",
"__pycache__",
".pytest_cache",
]
[tool.pytest.ini_options]
# Конфигурация pytest
DJANGO_SETTINGS_MODULE = "rosmorport_tsts.settings"
python_files = ["tests.py", "test_*.py", "*_tests.py"]
testpaths = ["."]
addopts = "--cov=rosmorport_tsts --cov-report=html --cov-report=term-missing"