Skip to content

maxbur89/Lubimovka_backend

Repository files navigation

codestyle PEP8 and tests deploy python safety

Бэкенд "Любимовка"

Что сделано и чем отличается от структуры по умолчанию

  • 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

Правила работы с git (как делать коммиты и pull request-ы)

  1. Две основные ветки: master и develop
  2. Ветка develop — “предрелизная”. Т.е. здесь должен быть рабочий и выверенный код
  3. В master будет то, что будет заливаться на прод (CI/CD)
  4. Порядок именования веток
    • весь новый функционал — feature/название-функционала
    • исправление ошибок — bugfix/название-багфикса
  5. При создании новой ветки наследоваться от develop
  6. PR в develop и master должны быть базово покрыты тестами:
    • на доступность эндпонтов
    • проверка списка полей
    • проверен критичный функционал (пример: фильтр по слову “сосиска” возвращает только результаты с “сосиска“)

Правила возможно будут добавляться и обновляться.

Подготовка окружения для разработки

Что нужно подготовить предварительно:

  1. poetry
    Зависимости и пакеты управляются через poetry. Детальное описание + как установить в документации poetry.
  2. Docker
    Для разработки используется Postgres SQL. Базу данных удобно запускать через Docker.
  3. Файлы requirements
    Файлы редактировать вручную не нужно. Обновляются через pre-commit хуки (если есть изменение в зависимостях, то список обновится при коммите).
  4. pre-commit хуки
    Документация
    При каждом коммите выполняются хуки (автоматизации) перечисленные в .pre-commit-config.yaml. Если не понятно какая ошибка мешает сделать коммит можно запустить хуки вручную и посмотреть ошибки:
    pre-commit run --all-files

Если всё подготовлено:

  1. Склонируйте проект, перейдите в папку backend
    git clone git@github.com:Studio-Yandex-Practicum/Lubimovka_backend.git
    cd Lubimovka_backend
  2. Убедитесь что poetry установлен. Активируйте виртуальное окружение. Установите зависимости
    poetry shell
    poetry install
  3. Установите pre-commit хуки
    pre-commit install --all
  4. В IDE скорее всего потребуется указать путь до интерпретатора (скопируйте в IDE путь который вернет команда)
    poetry env info --path
  5. Установить pre-commit хуки
    pre-commit install --all
  6. Для запуска базы данных используйте postgres-local.yaml и docker-compose.
    docker-compose -f postgres-local.yaml up -d
    
  7. Остановка, удаление и все остальные команды как с любым контейнером docker
    • Остановить контейнер с БД:

      docker-compose -f postgres-local.yaml down
    • Остановить контейнер с БД удалив данные:

      docker-compose -f postgres-local.yaml down --volumes
  8. Локальные настройки не требуют переменных окружения. Если они потребуются:
    • раскоментируйте подключение .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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages