Насколько я помню, у Лебедева типограф реализован в виде сервиса. А хотелось что-то локальное, чтобы можно было поработать в тишине, без интернета, без почты и других внешних раздражителей…
Типограф требует, чтобы тип строки в параметрах был utf. По всей видимости, при выполнении переноса строк в {{ portfolio.text|linebreaks|typographus }} фильтр linebreaks отдает что-то отличное от юникода (что странно). Тогда typographus ругается. База у меня mysql в кодировке utf8_unicode_ci.
1) Патчим typographus.py, иначе он не примет результат работы force_unicode.
В 128 строке заменяем:
if type(string) is not unicode:
на:
if not isinstance(string, unicode):
2) Грамотно пишем фильтр, помня о безопасности (простите, карма не позволяет <pre></pre> использовать):
typographus.py:
from django import template
from django.template.defaultfilters import stringfilter
from django.utils.html import conditional_escape
from django.utils.safestring import mark_safe
Спасибо, что делитесь опытом (karma+). Отправлю автору типографа ваши комментарии, да и сам подправлю код в этом посте с указанием вашего авторства.
Подскажите, а почему правильно регистрировать фильтр 'typo', а функция называется 'do_typo'? Просто в примерах доки именование функции схоже с названием фильтра.
Но строчкой
from engine.common.typographus import typo (у вас она должна быть from typographus import typo)
я импортирую в модуль функцию typo, чтобы не было конфликта имен надо функцию-фильтр назвать как-то по-другому. В джанге принято в таких случаях приписывать do_* что я и сделал
Т. е. лучше всего оригинальный typographus.py положить туда где его сможет найти питон (в PYTHONPATH...).
В директории templatetags создать новый файл typograhus.py (лучше бы конечно по-другому назвать, что-нибудь типо typo_filters.py).
В него поместить код фильтра, а нужную функцию typo — импортировать.
Все, пошел спать, а-то мысли сонно спотыкаются на ходу.
Лучше из-за поддержки правил русского языка (предлоги, абревиатуры...). Кавычки-елочки можно, конечно, и для typogrify сделать. Плюс, авторы самого typographus хотели слить типограф вместе с py-utils (поддержка числительных и пр.). Вобщем, есть ньюансы.
Фильтр для типографики