Можно ли запустить секцию трансмогрификатора после того, как все остальные полностью запустятся?
Я импортирую контент в Plone, используя конвейер трансмогрификатора, и, чтобы исправить различные аспекты, такие как изображения, ссылки и связанный контент, мне нужно запустить мой раздел сразу после того, как весь контент был создан и проиндексирован.
Мне это нужно, потому что я хочу использовать инструмент каталога для поиска контента по пути и использования его UUID для ссылки на него.
Возможно ли это с помощью Transmogrifier или лучше сделать это с помощью любой другой технологии, например, простого шага обновления?
Я думал об использовании шаблона, похожего на исходный раздел:
from collective.transmogrifier.interfaces import ISection
from collective.transmogrifier.interfaces import ISectionBlueprint
class DoSomethingAtTheVeryEndSection(object):
classProvides(ISectionBlueprint)
implements(ISection)
def __init__(self, transmogrifier, name, options, previous):
self.previous = previous
def __iter__(self):
for item in self.previous:
yield item
for item in self.previous:
do_something()
Это хорошая идея?
1 ответ
Да, это хорошая идея сделать раздел PostProcess, единственная проблема в том, что self.previous
генератор не может быть вызван 2 раза таким образом.
Обходной путь - использовать itertools.tee для дублирования генератора, так что вы можете дважды войти в генератор:
from collective.transmogrifier.interfaces import ISection
from collective.transmogrifier.interfaces import ISectionBlueprint
import itertools
class DoSomethingAtTheVeryEndSection(object):
classProvides(ISectionBlueprint)
implements(ISection)
def __init__(self, transmogrifier, name, options, previous):
self.previous = previous
def __iter__(self):
self.previous, self.postprocess = itertools.tee(self.previous)
for item in self.previous:
yield item
for item in self.postprocess:
do_something()