2011-06-09 23 views
2

我们正在使用quintagroup.transmogrifier内容导入配置文件来加载我们自动化测试的内容(非常有用)。设置默认页面似乎不起作用。使用quintagroup.transmogrifier通用设置导入设置默认页面不适用于敏捷

文档建议quintagroup.transmogrifier支持设置默认页面,但不支持它是否适用于通用设置导入步骤。我终于想通了,你需要添加一个properties.xml文件到folderish项目的文件夹下面的:

<?xml version="1.0" encoding="utf-8"?> 
<properties> 
    <property name="default_page" type="string"> 
     index 
    </property> 
</properties> 

其中指数由默认页面的ID,并在进口替代。 cfg你需要

[transmogrifier] 
pipeline = 
    reader 
    … 
    propertiesimporter 

[reader] 
… 
.properties.xml = propertymanager 

[propertiesimporter] 
blueprint = quintagroup.transmogrifier.propertiesimporter 

但是这是行不通的。我们正在运行Plone 4.1rc3 +敏捷1.0,可能它与敏捷不兼容。我已经找到了在quintagroup.transmogrifier.propertymanager.PropertiesImporterSection码位的地方掉下来:

 path = item[pathkey] 
     obj = self.context.unrestrictedTraverse(path, None) 

这里的路径是一个Unicode字符串和unrestrictedTraverse返回无。如果使用字节字符串,则返回正确的对象。这是与敏捷不兼容还是我做错了什么?

回答

1

这是您需要向quintagroup.transmogrifier包的作者报告的错误。路径必须始终为ASCII字节,而不是Unicode对象。 collective.transmogrifier中的所有部分(quintagroup.transmogrifier使用的底层引擎)将路径编码为ASCII。

下面是collective.transmogrifier.sections.constructor一个代码片段例如:

 type_, path = item[typekey], item[pathkey] 

    fti = self.ttool.getTypeInfo(type_) 
    if fti is None:       # not an existing type 
     yield item; continue 

    path = path.encode('ASCII') 
    elems = path.strip('/').rsplit('/', 1) 
    container, id = (len(elems) == 1 and ('', elems[0]) or elems) 
    context = self.context.unrestrictedTraverse(container, None) 

报告给dedicated issue tracker on Plone.org所以作者都可以给你。

+0

好的谢谢你的建议。我提出了一个问题http://plone.org/products/quintagroup.transmogrifier/issues/3/view,并暂时在我的测试设置方法 – scarba05 2011-06-10 09:24:54

+0

@ martijn-pieters中设置默认页面,另一个名为'plone.app.transmogrifier.urlnormalizer'的蓝图可以添加到管道中以解决ascii问题。如果路径中包含文件夹,我确实遇到了问题。 – 2011-09-01 11:54:45

+0

@pigeonflight:事实上,在这种情况下,使用URL规范化程序部分将有助于清理路径。但它仍然是一个解决方法;该quintagroup代码不应该假设路径是一个普通的字符串。 – 2011-09-01 17:34:01