Архивы: django

Экспорт-импорт данных 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 не слишком готов.

Настройка админской панели в django

Интересная заметка на habrahabr про то как минимальными усилиями сделать из обычной админской панели django красивый и удобный интерфейс.

Do it satchmo way

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