DEV Community

Гимаев Наиль
Гимаев Наиль

Posted on

Форматер black и миграции

Описание проблемы

С недавних пор PyCharm перестал ругаться на форматирование, которые получается при использовании форматёра black и я полностью отказался от встроенного форматера. Сделал всё как описано в этой инструкции. Потом настроил CI, чтобы он не пропускал код не соответствующий формату black. А чтобы плохой код не доходил до CI, настроил precommit hook в git. Всё хорошо и замечательно до тех пор, пока дело не касается миграций. В обычном коде я постоянно жмякую хоткей, который приведёт код в порядок. Исправил строку - жмякнул. Но в автоматически созданных миграциях нет необходимости открывать файл и из-за них комиты не проходили. Сгенерировал миграцию, попытался сделать коммит, переформатировал код, сделал коммит. И эта последовательность действий повторялась снова и снова. Хотелось этого избежать.

Решение

Я работаю в Windows. Естественно, мой код работает в docker'е. Каждый раз запуская контейнер приложения из консоли я монтирую домашнюю папку. В результате, сохраняется история команд bash и django shell_plus между запусками контейнера.
А раз есть домашняя папка, то можно сделать инициализацию псевдонимов (алиасов). Вот содержимое моего файла .bashrc

echo BASHRC
m () { ./manage.py $@; }
m1 () { MDO_DB=LOCAL m makemigrations $@ && black .; }

alias m2='MDO_DB=LOCAL m migrate'
alias mm='m1 && m2'
alias plus='m shell_plus --print-sql'

alias -p
Enter fullscreen mode Exit fullscreen mode
  • m1 - создание миграции
  • m2 - применение миграций
  • mm - создание и применение

Кстати, о переменной MDO_DB. Я могу переключаться между разными БД: локальной, тестовой и даже продом. За это отвечает упомянутая переменная. К проду подключаться могу, но никогда этого не делаю, а вот тестовому серверу подключаюсь часто, когда нужно пройти отладчиком на данных тестовой среды. И чтобы миграция применялась только на локальной базе, используется явное указание MDO_DB=LOCAL.

После использования псевдонимов мне не нужно отвлекаться на форматирования, т.к. все миграции и остальные файлы проекта полностью отформатированы.

Глоссарий

  • Хоткей - горячая клавиша
  • Жмякнуть - нажать
  • Псевдоним, алиас - alias
  • Прод - production-сервер
  • Глоссарий - словарик

Top comments (0)