2015-07-22 4 views
1

Я импортирую контент в Plone с использованием конвейера трансмигратора и, чтобы исправить различные аспекты, такие как изображения, ссылки и связанный контент, мне нужно запустить мой раздел сразу после того, как все содержимое было создано и проиндексировано.Можно запустить секцию трансформирования после того, как все остальные полностью запущены?

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

Возможно ли использование трансмогистратора, или лучше сделать это, используя любые другие доступные технологии, например, простой шаг обновления?

Я думал об использовании шаблон, похожий на секции источника:

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() 

Является ли это хорошая идея?

+0

Пока вы можете найти созданный элемент в ZODB с вашей стороны, что вы могут добавлять чертежи после шага создания контента. –

ответ

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() 
+0

В конце я думаю, что это не будет хорошей идеей; было бы лучше запустить скрипт после создания контента вне Transmogrifier; таким образом мы можем исправить несколько вещей без необходимости запуска всего конвейера. – hvelarde

 Смежные вопросы

  • Нет связанных вопросов^_^