воскресенье, 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 в частности, по-моему, довольно сильно меняют процесс разработки, причём в лучшую сторону. Обмен кодом/идеями - очень хорошая вещь.

среда, 25 августа 2010 г.

Об истории джанго

Для тех, кто не в курсе - откуда появился Django.

пятница, 18 июня 2010 г.

Патчим PIL под Windows

Сам я вот уже полтора года сижу на Linux, поэтому проблемы с виндовыми библиотеками как-то меня не особо касались.
Но, не так давно, взялся руководить одним студенческим проектом на Django, предложил на выбор: или ставить линукс (хотяб в виртуалку) или иметь сношения с зависимостями виндовых библиотек. С линуксом не так чтоб здорово, поэтому все выбрали 2-й вариант.
И вроде бы особых проблем не было, если не считать чуть более хитрую настройку всего зоопарка.
Но вот на днях "отвалилась" у них капча со словами: "The _imagingft C module is not installed", сами они разобраться не смогли, пришлось мне делать вскрытие.
Оказалось, что товарищи сборщики прописали левую зависимость в библиотеку. Пересобирать как-то совсем было лениво, поэтому просто взял Resource Hacker и вырезал следующий кусок
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
    </dependentAssembly>
  </dependency>
к чёртовой матери из _imagingft.pyd.

P.S. Обнаружил http://draft.blogger.com/, который более внятно работает с HTML (странно, что по дефолту стоит совсем кривой редактор)

пятница, 4 июня 2010 г.

Django In Depth от Джеймса Беннета

По-моему, отличнейшая презентация (и почему я на неё только вчера наткнулся?) :

суббота, 17 апреля 2010 г.

По следам...

Вспомнил, что начинал читать Pro Django, и решил продолжить это дело. И почти сразу нашёл пояснение к предыдущей проблеме с переменными в блоках DTL: контекст, передаваемый в шаблоны организован в виде стэка.
Оказалось, что и в официальных джанговских доках это тоже описано.
P.S. В комментах и в своём блоге alerion дал решение в прошлый раз (но до его блога я не добрался, а приведённый вариант был не до конца понятен).