|
||
---|---|---|
.. | ||
auth.md | ||
caching.md | ||
comments-pagination.md | ||
features.md | ||
follower.md | ||
load_shouts.md | ||
rating.md | ||
README.md |
Документация проекта
Модули
Аутентификация и авторизация
Подробная документация: auth.md
Основные возможности:
- Гибкая система аутентификации с использованием локальной БД и Redis
- Система ролей и разрешений (RBAC)
- OAuth интеграция (Google, Facebook, GitHub)
- Защита от брутфорс атак
- Управление сессиями через Redis
- Мультиязычные email уведомления
- Страница авторизации для админ-панели
Конфигурация:
# settings.py
JWT_SECRET_KEY = "your-secret-key" # секретный ключ для JWT токенов
SESSION_TOKEN_LIFE_SPAN = 60 * 60 * 24 * 30 # время жизни сессии (30 дней)
Реакции и комментарии
Модуль обработки пользовательских реакций и комментариев.
Основные возможности:
- Создание, обновление и удаление реакций (лайки, дизлайки, комментарии)
- Иерархические комментарии с пагинацией корневых и дочерних
- Расчет статистики (счетчик комментариев, рейтинг)
- Автоматическое добавление/снятие статуса "featured" для публикаций
- Оптимизация запросов с использованием distinct() для предотвращения дублирования
Особенности реализации:
- Физическое удаление рейтинговых реакций и логическое удаление комментариев (поле deleted_at)
- Использование distinct() для предотвращения дублирования результатов при JOIN с eager loading
- Эффективная обработка иерархических данных с помощью специализированных GraphQL запросов
Ключевые функции:
get_reactions_with_stat(q, limit, offset)
- получение реакций со статистикойload_comments_branch(shout, parent_id, limit, offset, sort, children_limit, children_offset)
- загрузка иерархических комментариев с пагинацией
Административный интерфейс
Основные возможности:
- Защищенный доступ только для авторизованных пользователей с ролью admin
- Автоматическая проверка прав пользователя
- Отдельная страница входа для неавторизованных пользователей
- Проверка доступа по email или правам в системе RBAC
Маршруты:
/admin
- административная панель с проверкой прав доступа
Запуск сервера
Стандартный запуск
python main.py
Запуск с поддержкой HTTPS
Для локальной разработки с HTTPS используйте скрипт run.py
с инструментом mkcert:
# Установите mkcert
# macOS:
brew install mkcert
# Linux:
# sudo apt install mkcert (или эквивалент для вашего дистрибутива)
# Windows:
# choco install mkcert
# Установите локальный CA
mkcert -install
# Запуск с HTTPS на порту 8000 через Granian
python run.py --https
# Запуск с HTTPS на другом порту
python run.py --https --port 8443
# Запуск с несколькими рабочими процессами
python run.py --https --workers 4
# Запуск с указанием домена для сертификата
python run.py --https --domain "localhost.localdomain"
При первом запуске будут автоматически сгенерированы доверенные локальные сертификаты с помощью mkcert.
Преимущества mkcert:
- Сертификаты распознаются браузером как доверенные (нет предупреждений)
- Работает на всех платформах (macOS, Linux, Windows)
- Простая установка и настройка