首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在其他所有的部分都已经完全运行之后,可以运行一个变色器部分吗?

在其他所有的部分都已经完全运行之后,可以运行一个变色器部分吗?
EN

Stack Overflow用户
提问于 2015-07-22 17:52:44
回答 1查看 44关注 0票数 1

我是导入内容到Plone使用一个变形管道,为了修复各种方面,如图像,链接和相关内容,我需要运行我的部分刚刚创建和索引的所有内容。

我需要这样做,因为我想使用目录工具,以便按路径搜索内容,并使用它的UUID来引用它。

是否可以使用变形器,或者使用任何其他可用的技术,比如简单的升级步骤?

我正在考虑使用类似于源部分的模式:

代码语言:javascript
复制
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()

这是个好主意吗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-29 14:14:56

是的,创建一个PostProcess部分是个好主意,唯一的问题是不能以这种方式调用self.previous生成器2次。

解决方法是使用itertools.tee复制生成器,这样您就可以进入生成器两次:

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31570498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档