Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用rt.modify搜索和替换Plone中的灵巧性内容_Python_Regex_Replace_Plone_Zope - Fatal编程技术网

Python 如何使用rt.modify搜索和替换Plone中的灵巧性内容

Python 如何使用rt.modify搜索和替换Plone中的灵巧性内容,python,regex,replace,plone,zope,Python,Regex,Replace,Plone,Zope,我们正在从一个旧的静态站点迁移到Plone 4.3。我们已经从旧网站导入了几个HTML页面,现在面临8000多个硬编码链接,需要在我们的Plone系统中进行更新,以符合我们新的url标准。这些页面是使用自定义敏捷类型构建的。我们不想手工编辑这些内容 我们希望在Plone中使用批量修改工具。我们正试图用它来替换所有使用正则表达式的链接。不幸的是,无论我们使用这个工具在Plone中搜索什么,它都找不到一个结果 我觉得我们错过了一步,或者走错了方向 我们是否缺少一个程序,或者是否有更好的方法来搜索和替

我们正在从一个旧的静态站点迁移到Plone 4.3。我们已经从旧网站导入了几个HTML页面,现在面临8000多个硬编码链接,需要在我们的Plone系统中进行更新,以符合我们新的url标准。这些页面是使用自定义敏捷类型构建的。我们不想手工编辑这些内容

我们希望在Plone中使用批量修改工具。我们正试图用它来替换所有使用正则表达式的链接。不幸的是,无论我们使用这个工具在Plone中搜索什么,它都找不到一个结果

我觉得我们错过了一步,或者走错了方向

我们是否缺少一个程序,或者是否有更好的方法来搜索和替换我们灵巧类型内容中的硬编码链接?我们认为,我们可能需要以某种方式索引灵巧性内容,以便可以对其进行搜索

如果这是真的,我们似乎找不到这方面的文件

以下是我们用来尝试使其工作的参考资料:


对不起,rt.bulkmodify现在不支持灵巧。您必须提供合适的
IBulkModifyContentChanger
适配器

这里是我们为plone.app.contenttypes/plone 5兼容性开发的未发布版本(由于目前无法在plone 5上真正实现此功能,因此未进行测试)。也适用于Plone 4上的纯灵巧自定义类型:

from ..interfaces import IBulkModifyContentChanger
from zope.interface import implements


class TextContentAdapters(object):
    """This is OK for every know plone.app.contenttypes dexterity item"""

    implements(IBulkModifyContentChanger)

    def __init__(self, context):
        self.context = context

    def _get_text(self):
        return self._get_utext().encode('utf-8')

    def _set_text(self, text):
        raise NotImplementedError("%s doesn't implements setter for 8-bit string" % self.context.portal_type)

    def _get_utext(self):
        text_data = getattr(self.context, 'text', None)
        if text_data:
            return text_data.raw

    def _set_utext(self, text):
        self.context.text = text
        self.context.reindexObject(idxs=['SearchableText'])

    text = property(_get_text, _set_text)
    utext = property(_get_utext, _set_utext)

我们正在研究索引灵巧的内容类型。一个从未在我们的结果中出现的问题可能会帮助我们找到解决方案。还有一个类似的问题。检查它是否对您有帮助。;)只是检查一下:是否如中所述,将您的敏捷内容类型添加为新的处理程序?在rt.bulkmodify处理您的内容类型之前,这是绝对需要的。@tcuvelo谢谢!我们将对此进行检查。我必须检查Plone管理员。是他策划的。从我选择的答案来看,我们似乎无法继续我们想要的方式。谢谢你的帮助!谢谢我们将努力使这项工作发挥作用。知道它目前不受支持,我们就可以继续使用其他想法。我们将尝试这种方法,看看它是否对我们有帮助。