2011-06-09 19 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