Шаблон для debian-пакетов, использующих virtualenv

Так как уже несколько раз, в том числе и по работе, столкнулся с задаче завернуть django-проект в установочный пакет для debian и, т.к. хотелось сделать это хорошо и с использованием virtualenv, то потратил некоторое время и собрал на github шаблон для создания таких пакетов. После разворачивания и небольшой правки Makefile остаётся только перенести свой проект в папку project, быстренько глянуть инструкцию, чтобы убедиться, что ничего не забыто, и запустить make builddeb.

Настраиваем sentry с virtualenv и uwsgi

UPD: для debian-систем появилась возможность упростить порядок инсталляции и сделать её более изолированной и удобной для управления: см. здесь.

В предыщуем посте я описал свой рецепт установки django + virtualenv + uwsgi. Сегодня настраивал под свои проекты новую версию Sentry для протоколирования ошибок и описываю шаги, которые специфичны для неё:

Continue reading Настраиваем sentry с virtualenv и uwsgi

Настройка nginx, uwsgi и django с django CMS на ubuntu 12.04 LTS

Записываю свой типовой шаблон настройки сервера с Ubuntu 12.04 LTS с нуля для раздачи django-проектов с помощью nginx, uwsgi и с изоляцией окружений с помощью virtualenv.

Для начала установка собственно ПО:

sudo apt-get install nginx uwsgi uwsgi-plugin-python \
python-virtualenv libjpeg62-dev

Используемая структура каталогов:

  • /var/lib/django/projects: для окружений virtualenv, соответствующих проектам
  • /web/: для статичных файлов проектов

Continue reading Настройка nginx, uwsgi и django с django CMS на ubuntu 12.04 LTS

Экспорт-импорт данных django-cms

Приводил сегодня в порядок базу данных одного проекта на django-cms и в ходе этого процесса решил перенести накопившиеся данные в новую БД, инициализированную с нуля и с успешно прогнанными миграциями. И, т.к в документации об этом не было ни слова, пришлось искать решение, и наткнуться на пару ошибок, после которых удалось создать готовый рецепт:

  • Первым делом переносим данные из таблицы auth_user, например, средствами БД;
  • Далее делаем два файла с данными. Так нужно, чтобы избежать проблемы с ключами в таблице cms_placeholder (IntegrityError: duplicate key value violates unique constraint “cms_placeholder_pkey”), которые например описаны в рассылке django-cms:

    ./manage.py dumpdata --indent=2 cms.placeholder > initial_data.cms.01.json

    ./manage.py dumpdata --indent=2 cms.cmsplugin cms.page cms.pagemoderatorstate cms.pageuser \
    cms.title picture snippet text (сюда-же впишем и остальные плагины) > initial_data.cms.02.json

  • И теперь загружаем полученные данные в новую БД:

    ./manage.py loaddata initial_data.cms.01.json
    ./manage.py loaddata initial_data.cms.02.json

django-cms, mptt и get_ancestors

Почему-то поисковики плохо выводят на решение проблемы с django-cms, когда, скажем, после обновления, попытка выполнить любую команду через manage.py приводит к ошибке:

File "/usr/local/lib/python2.6/dist-packages/publisher/mptt_support.py", line 142, in install_mptt 
    attrs[method_name] = getattr(mptt_models, method_name) 
AttributeError: 'module' object has no attribute 'get_ancestors'

Решение на самом деле простое: в django-cms есть уже встроенный модуль mptt. Но, если ставить через pip, то он устанавливает django-mptt, который естественно оказывается приоритетнее и несовместимым. Выход один: удалять django-mptt сразу после установки. Ну и использовать virtualenv, если есть необходимость в свежей версии django-mptt.

Дополнение: в django-cms версии 2.2 обещают прекратить эту порочную практику и нормально работать с django-mptt. Так-что ждём 🙂

Успел за трендом

Вот и я оказался среди прочих, кто завёл себе профиль на github. В качестве пробного шара выложил туда модуль доставки ЕМС России для Satchmo (интернет-магазин на Django). Модуль обкатан и используется в нашем велоодежном проекте и может пригодится тем, кто смотрит в сторону python для своего магазина в сети. Всё-таки пока для России Satchmo не слишком готов.

Do it satchmo way

Недавно потребовалось быстро развернуть более-менее универсальный магазин для нашего нового проекта торговли велотоварами. PHP-системы мне как-то не нравились и из симпатии к python начал было писать проект на django, но вскоре понял, что скорее всего получается велосипед, и начал искать что-то готовое. Оно пришло в виде Satchmo, весьма универсального и накручиваемого решения для электронной торговли. Что понравилось – немало настроек, в которых поначалу можно запутаться. Есть тонкости в адаптации под себя, но они описаны в документации (один отсутствующий момент – это как обновлять sitemaps, пришлось додумывать и доделывать самома). Но главное, магазин развернулся из коробки и через пару часов в нём уже можно было добавлять товары. А вот допиливания мелочей происходят уже по ходу, и зачастую незаметно для посетителей 🙂