- poetry как менеджер пакетов и управления зависимостями
- изменена структура:
- настройки и django приложения в папке config
- папка для приложений: apps
- отдельные настройки для тестов или локального / 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 — “предрелизная”. Т.е. здесь должен быть рабочий и выверенный код
- В master будет то, что будет заливаться на прод (CI/CD)
- Порядок именования веток
- весь новый функционал — feature/название-функционала
- исправление ошибок — bugfix/название-багфикса
- При создании новой ветки наследоваться от develop
- PR в develop и master должны быть базово покрыты тестами:
- на доступность эндпонтов
- проверка списка полей
- проверен критичный функционал (пример: фильтр по слову “сосиска” возвращает только результаты с “сосиска“)
Правила возможно будут добавляться и обновляться.
Что нужно подготовить предварительно:
- poetry
Зависимости и пакеты управляются через poetry. Детальное описание + как установить в документации poetry. - Docker
Для разработки используется Postgres SQL. Базу данных удобно запускать через 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
- Установите pre-commit хуки
pre-commit install --all
- В IDE скорее всего потребуется указать путь до интерпретатора (скопируйте в IDE путь который вернет команда)
poetry env info --path
- Установить pre-commit хуки
pre-commit install --all
- Для запуска базы данных используйте 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
-
- Локальные настройки не требуют переменных окружения. Если они потребуются:
- раскоментируйте подключение .env в файле настроек config.settings.local
- добавьте файл .env в корень папки проекта
Тестов нет, но есть настройки для ускорения тестов + настройки для запуска unittest через pytest (удобно в vscode)
Доступна команда для установки прав пользователей согласно их группам:
./ manage.py set_perms
Доступна команда для наполнения БД данными:
./ manage.py filldb
Команда сейчас немного "сырая". Но заполняет такими тестовыми данными, как:
- персоны
- партнёры
- попечители
- волонтёры
- команды фестиваля
- пользователи-админы и редакторы (для входа используем ник admin_X или editor_X, где Х - число от 1 до 5 и дефолтный пароль "pass")
Для создания таких тестовых данных, как проекты, новости и блог доступна команда:
./ manage.py filldb_articles
Ее следует применять ПОСЛЕ команды filldb (создает объекты, необходимые для создания сложных сущностей блога/проекта/новости).
Для очистки БД от данных (но не удаления таблиц) можно использовать команду:
./ manage.py flush