Zope3 продукты ng.zcmlmultiform ng.app.rubricator.algorithm.base

ng.kit

Andrey Orlov  2008-07-05 16:21

ng.kit - это небольшой набор инструментов, позволяющих восстанавливать нарушенную работу Zope3 и выполнять некоторые настройки, связанные преимущественно с изменением объектной модели.

В настоящее время продукт находитя в разработке и не все его компоненты полностью работоспособны.

Продукт

Название:
ng.kit
Выложен на PyPI
Репозиторий
Краткое описание пакета ng.kit

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

Пакет разработан как бибилиотека небольших страниц-инструментов, позволяющих решить разные темные цели. Список инструментов оформился по опыту эксплуатации Zope3-сайтов и решают замеченные проблемы. Продукт является двойственным продуктом по отношению к ng.scripts, который содержит скрипты, запускаемые посредствено runscript.

Общие рекомендации к реализации

Если в описании не оговорено обратного, то все инструменты создаются как формы (form) и логика скрипта запихивается в метод setData. Метод getData возвращает умолчания из интерфейса схемы, пример можно посмотреть в продукте ng.app.photo.

Страница fixintid

При создании intid не выполняет индексацию вложенных объектов и только вновь созданные объекты оказываются зарегистрированнными в нем. Эта страница вызывается в контексте intid и индексирует все объекты, входящие в тот же сайт-менеджер, что и intid. Как найти ближайший сайт-менеджер - можно посмотреть в zope.app.catalog :), все объекты ищутся обходом дерева, например в ширину.

Страница cleanintid

При ряде операций с Zope, утилита intid может оказаться заполненной ссылками на несуществующие объекты. Решить проблему может страница @@cleanintid, алгоритм работы которой примерно такой:

>>> for a,b in ii.items() :
...  if 'file2file' in str(ii.getObject(a)) :
...    ii.unregister(ii.getObject(a))
...
>>> for a,b in ii.items() :
...  if 'file2file' in str(ii.getObject(a)) :
...   print a,ii.getObject(a)

Т.е. просматриваем весь список ссылок в intid, пробуем их получить, и, если это проваливается, удаляем ссылку.

Страница fixparent

По причине рззличных полуаварийных ситуаций, иногда оказываются нарушенными отношения вложенности между некоторыми объектами (проще говоря, атрибут __parent__ не указывает на контейнер, в который вложен объект). Страница вызывается в контексте объекта, начиная с которого происходит обход дерева в глубину и исправляются _неисправные_ ссылки. Возвращается список исправленных объектов.

Страница annotationremover

Аннотации к объектам обладают свойством накапливаться и становится ненужными. В связи с этим оказываются полезными два вида страниц: локальный редактор аннотаций (см. ниже) и рекурсивный редактор аннотаций. Странцица рекурсивного редактора вызывается в контексте объекта, начиная с которого происходит обход дерева объектов в глубину и для каждого объекта проверяется наличие аннотации с именем, удовлетворяющим регулярному выражению. Если такое имя есть, то возможно:

  • Переименовать аннотацию;
  • Удалить аннотацию.

По результатам выполнение формы выводится список объектов, которые были изменены.

Схема формы IAnnotationRemover

regexp : TextLine
Регулярное выражение, которому должна удовлетворять аннотация. При сохранении регулярного выражения оно проверяется на компилируемость (re.compile).
format : TextLine
Формат по которому выполняется переименование аннотации.
doremove : Bool
Удалить аннотацию.

Адаптер IAnnotations к IContainerAnnotation

Это обычный адаптер вида (т.е. его можно вызвать как @@annotations), который возвращает прокси с интерфейсом IContainerAnnotation(IContainer), что позволяет связать с ним стандартный вид для редактирования содержимого контейнера и редктировать аннотации конкретного объекта.

Вложено:

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