2008-01-12

Zope3 продукты ng.app.remotefs ng.app.rubricator

ng.app.rss

None  2008-01-12 23:38

RSS-фидер состоит из трех компонент: очереди объектов (сейчас реализована в рамках продукта objectqueue), описания специальных параметров фидера (нужно сделать продукт ng.app.rss), сохраняющего данные, и собственно самой страницы. Страница может привязываться или не привязываться к какому-то интерфейсу, но так или иначе, она адаптирует контекст к двум интерфейсам:

  1. Интерфейс очереди;
  2. Интерфейс параметров фидера;

После чего по параметрам фидера генерируется заголовок, а по содержимому очереди - записи RSS. Очередь, в настоящее время, содержит объекты, которые надо приводить к потребностям RSS специальными адаптерами.

Ну вот в принципе - готовое задание.

Описание RSS

Для первого релиза мы выбираем формат Atom.

Краткое описание пакета ng.app.rss

Краткое описание пакета ng.app.rss

Пакет разработан для раздачи RSS-лент и является объединением трех компонент:

ObjectQueue
Компонента, выполняющая поддержку очереди изменившихся объектов. Такая очередь характеризуется принципом отбора объектов, их очередностью и рядом других параметров. Содержимое очереди это точно то, что войдет в RSS-ленту.
RSS-параметры
Компонента, предоставляющая интерфейс, содержащий настроечные параметры RSS. Эту компоненту надо разработать в соответствии с принципами, изложенными ниже.
RSS-вид

Адаптер вида, получающий текущий контекст и адаптирующий его к двум интерфейсам: IObjectQueue (соответствует очереди) и IRSS (соответствует парамерам RSS).

Адаптер вида может привязываться, а может и не привязыватся к конкретному контексту - это не должно отражаться на его работе и быть только элементом удобства.

В качестве первоначального выбора, используется стандарт http://ru.wikipedia.org/wiki/Atom - он более прост и более полезен, так используется в группах, на которые мы собираеся звязаться сразу после выхода проекта в свет.

Идея реализации

Главная тонкость реализации - нигде и никак не определяется в каком месте и каким образом располагаются ObjectQueue и RSS. Они получаются при помощи адаптера "откуда-то", хотя на самом деле могут быть расположены (см. Адаптация как способ ассоциации компонент.txt) в самых разных местах. Пока что мы не будем заниматься общем решением этой проблемы, но когда основная часть будет написана и RSS будет раздаватся, попробуем написать два специальных адаптера, которые поочередно пытаются адаптировать текущий объект напрямую, потом всех его родителей, потом дергать утилиту. Ну или поиграем в другие способы тонкой настройки.

Интерфейсы

ObjectQueue

Все интерфейсы и реализация описаны в objectqueue.txt (продукт может переехать скоро). Адаптер, выполняющий поиск продукта уже есть.

Утилита предоставляет список объетктов, но объекты могут быть включены в ленту, только если они приводимы к интерфейсу IRSSItem.

IRSSItem
Записи RSS-ленты заполняются атрибутами этого интрефейса. Если в очереди есть объект, неприводимый к этому интерфейсу, запись о нем не включается в RSS-ленту. Список полей интерфейса нужно позаимствовать из описания Atom: http://ru.wikipedia.org/wiki/Atom, а адаптеры хорошо пишутся с помощью продукта ng.zcmljunction.

RSS-параметры

IRSS
Общие параметры RSS-ленты, список надо позаимствовать отсюда: http://ru.wikipedia.org/wiki/Atom . Адаптер контекста к IRSS пишется исходя из предположения, что IRSS - утилита.

Компоненты

Два компонента уже описаны: ObjectQueue и RSS-параметры, упомянем еще два:

Адаптер вида ng.app.rss.rssview

RSS-лента изготаввливается на основ ZPT, а данные получаются при помощи mix-in'а, как описано выше.

Адаптер к интерфейсу IRSSItem

Делается на основе ng.zcmljunction, в качестве теста можно попробовать взять куски продукта note или установить наш сайт. Пора уже выходить в реальный мир :).

переписать как описание готового продукта

Эпицентр Zope3 Учат тут Нейросети Репозиторий Статистика Редакторам Проекты
Подписаться на RSS Feed Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site noooxml