我们正在使用quintagroup.transmogrifier内容导入配置文件来为我们的自动化测试加载内容(非常有用)。设置默认页面似乎不起作用。
文档建议quintagroup.transmogrifier支持设置默认页面,但不支持是否适用于通用设置导入步骤。我最终发现你需要将一个properties.xml文件添加到文件夹项目的文件夹中,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<properties>
<property name="default_page" type="string">
index
</property>
</properties>
其中index由默认页面的id替换,并且在import.cfg中也需要
[transmogrifier]
pipeline =
reader
…
propertiesimporter
[reader]
…
.properties.xml = propertymanager
[propertiesimporter]
blueprint = quintagroup.transmogrifier.propertiesimporter
然而,这不起作用。我们正在运行Plone 4.1rc3 + Dexterity 1.0,可能它与Dexterity不兼容。我已经跟踪了quintagroup.transmogrifier.propertymanager.PropertiesImporterSection中的代码位置:
path = item[pathkey]
obj = self.context.unrestrictedTraverse(path, None)
此处path是一个unicode字符串,unrestrictedTraverse返回None。如果使用字节字符串,则返回正确的对象。这是与Dexterity的不兼容还是我做错了什么?
答案 0 :(得分: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报告,以便作者为您解决。