Plone portal_转换未在通过webdav创建的新内容中运行

Plone portal_转换未在通过webdav创建的新内容中运行,plone,plone-4.x,Plone,Plone 4.x,使用Plone 4.3.4,我创建了文件系统产品,以创建新的灵巧内容类型(“文章”)和新的转换。文章包含一个RichTextField和一个自定义转换(“xml_到html”) xml_到_html转换旨在使用基于SAX的解析器和模板系统将RichTextField的原始xml输入转换为html输出。这在通过web创建或修改文章项目时非常有效 mime_types_注册表设置为将文章映射到*.xml和mimetype text/xml 当通过WebDav上传XML文件时,Plone会正确地创建一

使用Plone 4.3.4,我创建了文件系统产品,以创建新的灵巧内容类型(“文章”)和新的转换。文章包含一个RichTextField和一个自定义转换(“xml_到html”)

xml_到_html转换旨在使用基于SAX的解析器和模板系统将RichTextField的原始xml输入转换为html输出。这在通过web创建或修改文章项目时非常有效

mime_types_注册表设置为将文章映射到*.xml和mimetype text/xml

当通过WebDav上传XML文件时,Plone会正确地创建一篇文章,其中RichTextField被指定为primary。但是,xml_到html转换不会运行以创建转换后的输出。RichTextValue.raw包含上载的文件内容,但从未生成RichTextValue.output

更复杂的是WebDav客户端正在设置内容类型:text/xml,但RichTextValue.mimeType总是以text/plain的形式出现

我可以看到我的特定类型事件挂钩正在工作。我可以基于zope.lifecycleevent.interfaces.IObjectAddedEvent执行任意代码,但对象创建过程从来不会进行xml到html的转换

问题: a) 门户_转换是否应用于通过WebDav创建的内容项?如果不是,那就是我的答案

b) 为什么主字段的mimetype不考虑webdav客户端设置的值

谢谢, Don

内容类型 mimeType和encoding属性是在Content-Type头的值上设置的-

签出webdav客户端内容类型标题

必须为XML主体适当设置内容类型请求头(例如,设置为“text/XML”或“application/XML”)

第二种情况 默认情况下,新项目对象创建为“文本/普通”

在这种情况下,你可以打电话

context.portal_transforms.convert('xml_to_html',context.richtextfield_name)

直接在article-template-view.pt和其他特定于内容的视图中。

我正在使用Charles Proxy检查和操作内容类型标题。我已正确设置内容类型注册表,并且正在创建正确的内容类型。进退两难的是,在我进行TTW编辑之前,门户_转换不会运行。在内容创建期间检查RichTextValue时,mimetype与webdav PUT请求中设置的值不匹配。我决定绕过整个过程,通过添加内容和修改内容事件来进行处理。Portal_转换效率低下,因为结果只是缓存的,而不是持久存储的。