17 мар. 2011 г.

django-cms 2.1.3 и csrf.js в IE

Перевел группу сайтов django-cms 2.0.2 на 2.1.3. Давно хотел пересесть на ветку с фронт-энд редактированием страниц, а тут ещё и выяснилось, что в 2.0.2 версии масса проблем с разрешениями на редактирование (в моем случае все осложняется наличием нескольких доменов в одной базе).
В версии Django-CMS 2.1.3 все оказалось тоже не гладко. В IE при попытке добавить плагин я ловил ошибку в 27 строке файла csrf.js. Выяснилось, что в основном грешат на разные версии jquery:
https://groups.google.com/group/django-cms/browse_thread/thread/1c73a798d5634a6e
http://comments.gmane.org/gmane.comp.python.django.django-cms/2641
Но причина оказалась проще (в моем случае) - я продолжал использовать middleware для игнорирования csrf проверки, т.к. версия 2.0.2 не поддерживала csrf (а может я использовал ещё какое-то старье). Будьте бдительны!

South и django-profile

С января успел поучаствовать во множестве очень интересных django-проектов. Так вот, братцы, south - это теперь уже 100% стандарт. Если по какой-то причине вы его ещё не используете, срочно начинайте!
Ну я если уже начали, но не знаете как справиться с кастомными полями, для которых с версии south 0.6 нужно указывать свои валидаторы, в помощь вам правила игнора таких полей, описанные в документации. Например, поле country в обожаемом мной django-profile (в базовой модели профиля) не проходит schemamigration.
Используйте, и за одно поругайте меня, т.к. сдается  мне, что "^profile\.country" тут лишнее:

...
from userprofile.models import BaseProfile
from south.modelsinspector import add_ignored_fields


add_ignored_fields(["^profile\.country", "^userprofile\.countries\.CountryField"])


class Profile(BaseProfile):
    ...

Быстрой способ зарегистрировать модели в админке

# -*- coding: utf-8 -*-

from django.contrib import admin
from django.db.models.loading import get_models, get_app

for m in get_models(get_app('myappname')):
    admin.site.register(m)