Категории

Язык
Окружение
Область
Проект

20 сентября 2014 г. 21:18 (ред. 24 сентября 2014 г. 17:21)
Консольная утилита django-dev для тех, кто разрабатывает/поддерживает больше одного приложения для Django.
Сегодня накидал django-dev — консольную утилиту, которая может применять некие команды сразу ко всем вашим приложениям.

Например, сейчас оно может помочь в обновлении файлов локализации, а также в создании миграций для South и Django 1.7 одновременно.

Можно устанавливать и пробовать пользоваться. По ощущениям работает и на Python 2.7+, и на Python 3.2+. Для работы потребуется пакет virtualenv или просто Питон 3.3+.

Как начать пользоваться

1. Создайте новую директорию, где будет располагаться ваше рабочее место и переместитесь в неё;

2. Выполните > django-dev bootstrap, чтобы создать нужные для работы утилиты файлы и директории.

3. Создайте символические ссылки с директорий ваших приложений в поддиректорию apps (она создалась в текущей директории в ходе шага 2).

Например:

ln -s /home/idle/dev/django-sitetree/sitetree /home/idle/dev/dj_workspace/apps/sitetree

Обратите внимание, что ссылки создаём с директорий, содержащих models.py, но не setup.py.


Создаём миграции для South и Django 1.7+ одновременно

С выходом Django 1.7 отпала необходимость в приложении South — функциональность в переработанном виде переместилась прямо в каркас. По задумке авторов это должно было облегчить жизнь пользователям приложений, но пока видно только, что оно усложнило жизнь их разработчикам: для сохранения совместимости с предыдущими версиями Django вам придётся поддерживать два вида миграций одновременно.

Облегчаем себе жизнь при помощи команды add_migrations.

1. Для начала адаптируем старое приложение, использующее South: переносим старые миграции в south_migrations и создаём новые в migrations:
> django-dev add_migrations --relocate_south

После этого не забудьте зафиксировать эти изменения в вашей системе управления версиями, а также в документации к приложениям попросить пользователей перейти на South 1.0+ (эта версия знает, что нужно искать в south_migrations).

2. А далее, после внесений изменений в модели, по мере необходимости можно запускать автоматическое создание миграций обоих типов одновременно:
> django-dev add_migrations

3. Можно задать фильтр нужных приложений:
> django-dev add_migrations --apps sitecats siteflags


Обновляем файлы переводов

Чтобы удобно создавать/обновлять файлы локализаций (.mo и .po), используйте команду make_trans.

1. Обновляем все уже имеющиеся в приложениях файлы локализаций:
> django-dev make_trans

2. Обновляем/создаём файлы локализаций для указанных локалей:
> django-dev make_trans ru en

3. Обновляем/создаём файлы локализаций для указанных локалей и приложений:
> django-dev make_trans ru --apps sitetree sitegate


Пока всё.
Пользуйте, экономьте время.