воскресенье, 3 апреля 2011 г.

Затычки к django-multilingual-ng

Из всех "многоязычных" решений на Django самым внятным мне показался django-multilingual-ng, от авторов django CMS. Сама django CMS по смыслу не очень подошла для текущего проекта, поэтому было принято решение сделать своё решение, позаимствовав часть идей из django CMS.
То, что django-multilingual-ng написано под django CMS, к сожалению, дало неприятный косяк в том, что оно "из коробки" не другит с FeinCMS. Причём в тикете автор говорит - используйте лучше django CMS, что довольно странно, если мне нужен всего-лишь UI для редактирования mptt-деревьев.
Понадобилось тут ещё добавить некоторое удобство - чтоб в админке словарики (многоязычные) были по алфавиту отсортированы (в соответствии с текущим языком, конечно).
Поле ordering для ModelAdmin, естественно, не подходит, ибо переводы лежат в отдельной таблице и поля разные для разных языков получаются.
Поковырявшись в джанге получился вот примерно такой велосипедик:
class NameMultilingualAdmin(MultilingualModelAdmin):
    list_display = ('name',)

    @gll
    def get_changelist(self, request):
        field = 'name_%s' % GLL.language_code
        from django.contrib.admin.views.main import ChangeList
        
        class NameOrderedChangelist(ChangeList):
            def get_ordering(self):
                return (field, 'asc')

        return NameOrderedChangelist

пятница, 4 марта 2011 г.

Палка о 2 концах

К дифирамбам легкому созданию форков в прошлом посте надо добавить солидную ложку дёгтя: когда форков становится слишком много и забивают на upstream, то изменения могут разойтись, усложняя или делая вообще маловозможным обмен кодом между форками. Оказалось, просто, что юникод в оригинальном django-filebrowser уже поддерживается в последней версии (причём в выполненном тикете файл с русским именем), а форк без поддержки grappelli сделан заметно ранее и изменения из upstream в него не вливались. В общем, свобода - это хорошо, но лучше чтоб она давалась человеку, который понимает как и зачем ей пользоваться.

воскресенье, 27 февраля 2011 г.

Unicode rulezz

Вроде всё-таки начал делать более-менее реальный проект на Django, поэтому появляются поводы писать сюда.
Потребовалась работа с файлами (плюс интеграция с tinyMCE), к сожалению, django-filebrowser тянет в зависимостях grappelli, который совсем вроде как не сдался (думаю admin_tools вполне хватит). Нашёлся форк с "отпиленными" grappelli и uploadify, но загвоздк оказалась в том что он хочет "буквы" в именах файлов, а русские буквы, конечно же, буквами не являются на его взгляд. Чтож, 5 минут и готов по-моему вполне рабочий форк.
Open source и github в частности, по-моему, довольно сильно меняют процесс разработки, причём в лучшую сторону. Обмен кодом/идеями - очень хорошая вещь.