LINUX.ORG.RU
Ответ на: комментарий от Den0k

Ну, подразумевается следующий функционал:
Пример (Example.tmpl):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">;
<html>

#from Table import Table
#from Widget import Widget
##указываем путь до js библиотек
#set $Widget.jsPathPrefix = '/crm/js/'
##создаем таблицу (html_ префикс обозначает, что параметр пойдет как параметр для тега <table>)
#set table = $Table(html_id='myID',html_class='myClass',html_border=1,dimensions=[2,2])
##заполняем таблицу (header и body)
$table.replace([[['name','value']],[[1,2],[3,4]]])
##отрисовываем таблицу в текущий шаблон
$table.render()

##указываем список индексов (строка, столбец) ячеек для обновления и сериализуем в протокол передачи данных (предпочтительно JSON)
#set updList = $protocol.serialize([[0,0],[0,1]])
##по нажатию отправляем AJAX запрос (отправляем параметры-список индексов на указанный урл) на обновление ячеек таблицы(${table.js} подставит название соответствующего таблице js объекта)
<input type="submit" onclick="${table.js}.updateBodyElemList($updList,'update.py')">

</html>

burivuh
() автор топика
Ответ на: комментарий от anonymous

Сверху написано, что я подразумевал. В данный момент я не нашел ни одной либы для Cheetah удовлетворяющей тому, что я хочу. Писать на Cheetah принципиально. Я перепробовал много шаблонизаторов под питон и веб, но уже полгода пользуюсь Cheetah неслучайно. Поэтому возникло желание и назрела необходимость написать опсурс библиотеку. И я ее напишу (но в одиночку - это затянется надолго).

burivuh
() автор топика
Ответ на: комментарий от burivuh

burivuh, меня заинтересовало, хотя я ещё не всё понял. :)

Что именно будет делать такая либа? Упростит добавление функциональности "по типу" как Example.tmpl?

Ты находил что-то похожее или в этом направлении вообще ничего похожего?

Den0k
()
Ответ на: комментарий от Den0k

Хочется (рассматриваем в рамках MVC - Model-View-Controller):
1) Упростить написание view до предела. Особенно для стандартных элементов (селекты, таблицы, логин области, регистрационные формы и т.д.). В идеале написать Layout Managers для автоматического распихивания элементов а-ля Java GUI тулкиты.
2) Получить "js минимум" для интеграции с AJAX (используем prototype.js и json.js - тут никакой самодеятельности) как со стороны view, так и со стороны server-side controller - то есть написать часть controller на js (работа по принципу - нам дали урл по которому мы получаем данные (именно данные, а не html) для записи в конкретную часть конкретного виджета, а js объект, созданный вместе с cheetah описанием виджета, сам раскидывает данные по DOM объекту).
3) Упрощаем и сокращаем написание controller на стороне сервера. От него требуется взять данные, сериализовать в JSON средствами либы и отправить их js объекту виджета, не представляя как view устроен в принципе. (У меня часто из-за нехватки времени controller сильно срастался с view, что не есть гут.)
4) Получить хорошо оттестированную либу (а не набор кода для этого проекта, а этот (похожий) набор для другого - то есть меня давно уже подмывает хорошо оформить один раз и переиспользовать, но времени...) для использования в коммерческих продуктах.

Ограничения:
1) Python2.5,Cheetah,детально проработанный AJAX везде (хочу обновить ячейку таблицы - мне должны дать такую возможность, хочу обновить столбец - аналогично,хочу обновить label у виджета - аналогично, хочу заменить тело таблицы на "голую бабу" - и опять дожны дать такую возможность)
2) Пользователь либы в большинстве случаев не должен подозревать о существовании js. То есть работа с callback на js events должна выглядеть максимально приближено к питону и Cheetah. В том числе и для этого вводится сериализатор объектов python в JSON (используем simplejson и немного кастемизируем его, к примеру).
3) Забиваем на XML описания. У нас есть мощнейшая Cheetah и у нас есть JSON для связи с джаваскриптом - в итоге получаем повышенную читабельность и меньший оверхед по траффику.

Похожих вещей именно для читы (ну удобная она, блин =) ) я не нашел - если знаешь - ткни носом плз =)

burivuh
() автор топика
Ответ на: комментарий от decorator

Минусы на первый взгляд:

1) Завязка на CherryPy и TurboGears (большой минус). Работа через Buffet имхо для нового проекта (а не для миграции) просто лишний гемор.
2) Слабая автогенерация джаваскрипта.
3) Сильная связь с server-side controller (большой минус)
4) Вещь в себе. Я так и не нашел как мне, к примеру, поменять class (CSS) для конкретного виджета на произвольное значение. Я предпочитаю, чтобы все уровни были легко доступны в том числе и непосредственно html.
5) Pre-alpha. Уж если настолько глубоко в разработке, то лучше свое - проще и быстрее будет разбираться с возникающими проблемами и багами (большой минус).

burivuh
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.