Это репозиторий серверной части проекта "Любимовка". Репозиторий frontend проекта можно найти по ссылке: Фронтенд проекта «Любимовка».
- poetry как менеджер пакетов и управления зависимостями
- изменена структура:
- настройки и django приложения в папке
/config
- папка для приложений:
/apps
- настройки и django приложения в папке
- отдельные настройки для тестов или локального / prod окружения
- базовые линтеры (black, flake8)
- pre-commit хуки
- используется PostgreSQL
- базовая модель
TimeStampedModel
(импортировать изcore.models
) - автодокументация swagger/redoc (http://base_url/api/v1/schema/swagger-ui/ или http://base_url/api/v1/schema/redoc/)
Общие требования к стилю кода - ссылка
Что нужно проверить, когда вы сделали PR - чек-лист для PR
- Две основные ветки:
master
иdevelop
- Ветка
develop
— “предрелизная”. Т.е. здесь должен быть рабочий и выверенный код - Создавая новую ветку, наследуйтесь от ветки
develop
- В
master
находится только production-ready код (CI/CD) - Правила именования веток
- весь новый функционал —
feature/название-функционала
- исправление ошибок —
bugfix/название-багфикса
- весь новый функционал —
- PR в
develop
иmaster
должны быть базово покрыты тестами:- на доступность эндпойнтов
- проверка списка полей
- проверен критичный функционал (пример: фильтр по слову “сосиска” возвращает только результаты с “сосиска“)
- При создании миграций данных "вручную" обязательно передавайте параметр reverse_code. Это необходимо для возможности откатывать миграции. Если при откате миграции данные изменять не требуется, в качестве значения можно использовать
RunPython.noop
.
Пример:
# Ваш код
...
operations = [
migrations.RunPython(your_command, reverse_code=migrations.RunPython.noop),
]
- Poetry
Зависимости и пакеты управляются через poetry. Убедитесь, что poetry установлен на вашем компьютере и ознакомьтесь с документацией. - Docker
В проекте используется PostgreSQL. Рекомендуем запускать БД через Docker, следуя дальнейшим инструкциям. - Файлы requirements
Файлы редактировать вручную не нужно. Обновляются через pre-commit хуки (если есть изменение в зависимостях, то список обновится при коммите). - pre-commit хуки
Документация
При каждом коммите выполняются хуки (автоматизации) перечисленные в .pre-commit-config.yaml. Если не понятно какая ошибка мешает сделать коммит можно запустить хуки вручную и посмотреть ошибки:pre-commit run --all-files
- Склонируйте проект, перейдите в папку
/backend
git clone git@github.com:Studio-Yandex-Practicum/Lubimovka_backend.git cd Lubimovka_backend
- Убедитесь что poetry установлен. Активируйте виртуальное окружение. Установите зависимости
poetry shell poetry install
- Разверните и запустите базу данных, используя postgres-local.yaml и docker compose.
docker compose -f postgres-local.yaml up -d
- Дополнительно: остановка и удаление и т.д. как с любым контейнером docker, например:
docker compose -f postgres-local.yaml down # остановить docker compose -f postgres-local.yaml down --volumes # остановить и удалить базу
- Сделайте миграции
python manage.py migrate
- Установите pre-commit хуки
pre-commit install --all
- Убедитесь, что при запуске ваш IDE использует правильное виртуальное окружение. В противном случае - самостоятельно укажите путь к виртуальному окружению. Посмотреть путь можно следующей командой:
poetry env info --path
- Файл
.env
должен находиться в корневой папке проекта. Если вы решите не создавать свой.env
файл - в проекте предусмотрен файл.env_local
, обеспечивающий переменные для базовой работы на локальном уровне. - Для корректной работы сервиса по выгрузке заявок (на участие в фестивале) в Google-таблицу потребуются переменные окружения - добавьте файл .env в корень папки проекта. Для проверки работы сервиса необходимо в админ панели внести
spreadsheetId
таблицы, в которую будет происходить выгрузка и наименование нужного листа. Не забудьте разрешить пользователю с адресом "lubimovka@swift-area-340613.iam.gserviceaccount.com" вносить изменения в вашу таблицу (Настройки доступа).
Тестов нет, но есть настройки для ускорения тестов + настройки для запуска unittest
через pytest
(удобно в vscode)
Доступна команда для установки прав пользователей согласно их группам:
python manage.py set_perms
Доступна команда для наполнения БД данными:
python manage.py filldb
Команда заполняет базу такими тестовыми данными, как:
- персоны
- фестивали, пресс-релизы, волонтёры, команда фестиваля, попечители, партнёры, отборщики, площадки
- программы, авторы, пьесы
- спектакли, мастер-классы, читки, события
- баннеры, заявки на участие
- пользователи-админы, редакторы, журналисты и наблюдатели (для входа используем: admin_X (где Х - в диапазоне от 00 до 04), editor_X (где Х - в диапазоне от 05 до 09), journalist_X (X в диапазоне от 10 до 14), observer_X (где Х - в диапазоне от 15 до 16) и дефолтный пароль "pass"), пользователь суперадмин (superadmin/superadmin)
Для создания таких тестовых данных, как проекты, новости и блог доступна команда:
python manage.py filldb_articles
Ее следует применять ПОСЛЕ команды filldb
(создает объекты, необходимые для создания сложных сущностей блога/проекта/новости).
Для очистки БД от данных (но не удаления таблиц) можно использовать команду:
python manage.py flush