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

ng.app.rss

  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 или установить наш сайт. Пора уже выходить в реальный мир :).

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

Вложено:

Новости ng.app.rss 2009-06-30 13:28 Степан Ломов 
Эпицентр Zope3 Учат тут Нейросети Репозиторий Статистика Редакторам Проекты
Подписаться на RSS Feed Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site noooxml