feat: Add comprehensive Django user app with tests using model-bakery

- Implemented user authentication with JWT tokens
- Added user and profile models with OneToOne relationship
- Created service layer for business logic separation
- Implemented DRF serializers and views
- Added comprehensive test suite with model-bakery factories
- Fixed ipdb/pdbpp dependency conflicts with custom test runner
- Configured development and production environments
- Added deployment configurations for Apache, systemd, and Docker
This commit is contained in:
2026-01-19 14:12:33 +01:00
commit cbfbd8652d
51 changed files with 4183 additions and 0 deletions

36
docker/Dockerfile.celery Normal file
View File

@@ -0,0 +1,36 @@
FROM python:3.11.2-slim
# Установка системных зависимостей
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
gcc \
libpq-dev \
libffi-dev \
libxml2-dev \
libxslt1-dev \
zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
# Создание рабочей директории
WORKDIR /app
# Копирование файлов зависимостей
COPY requirements.txt .
COPY requirements-dev.txt .
# Установка Python зависимостей
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install --no-cache-dir -r requirements-dev.txt
# Копирование исходного кода
COPY src/ ./src/
# Создание необходимых директорий
RUN mkdir -p logs
# Создание пользователя для запуска приложения
RUN groupadd -r appgroup && useradd -r -g appgroup appuser
RUN chown -R appuser:appgroup /app
USER appuser
# Команда по умолчанию будет передаваться из docker-compose

41
docker/Dockerfile.web Normal file
View File

@@ -0,0 +1,41 @@
FROM python:3.11.2-slim
# Установка системных зависимостей
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
gcc \
postgresql-client \
libpq-dev \
libffi-dev \
libxml2-dev \
libxslt1-dev \
zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
# Создание рабочей директории
WORKDIR /app
# Копирование файлов зависимостей
COPY requirements.txt .
COPY requirements-dev.txt .
# Установка Python зависимостей
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install --no-cache-dir -r requirements-dev.txt
# Копирование исходного кода
COPY src/ ./src/
# Создание необходимых директорий
RUN mkdir -p logs staticfiles media
# Создание пользователя для запуска приложения
RUN groupadd -r appgroup && useradd -r -g appgroup appuser
RUN chown -R appuser:appgroup /app
USER appuser
# Открытие порта
EXPOSE 8000
# Команда по умолчанию
CMD ["gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "3"]

18
docker/postgres/init.sql Normal file
View File

@@ -0,0 +1,18 @@
-- Инициализационный SQL файл для PostgreSQL
-- Создает необходимые расширения и базовые настройки
-- Создание расширений
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "pg_trgm";
-- Создание пользователей (если нужно)
-- CREATE USER project_user WITH PASSWORD 'project_password';
-- GRANT ALL PRIVILEGES ON DATABASE project_dev TO project_user;
-- Настройки для производительности
ALTER SYSTEM SET shared_buffers = '256MB';
ALTER SYSTEM SET effective_cache_size = '1GB';
ALTER SYSTEM SET maintenance_work_mem = '64MB';
ALTER SYSTEM SET checkpoint_completion_target = 0.9;
ALTER SYSTEM SET wal_buffers = '16MB';
ALTER SYSTEM SET default_statistics_target = 100;