2011-07-30 19 views
1

我正在用collective.transmogrifier進行內容遷移,我正在用transmogrify.filesystem從文件系統中讀取文件。我不想按「原樣」導入文件,而是將它們導入到Plone的子目錄中。什麼是修改_path最簡單的方法?最簡單的方法來指定備用transmogrifier _path?

例如,如果下面的存在:

  • /var/www/html/bar/index.html

我想導入到:

  • /Plone/foo/bar/index.html

換句話說,導入「 baz「到子目錄」foo「。我看到兩個選項:

  • 在collective.transmogrifier中使用一些藍圖來破壞_path。
  • 寫一些藍圖到mangle _path。

我錯過了什麼更容易?

回答

3

使用標準inserter藍圖生成路徑;它接受Python表達式,並且可以在原地替換鍵:

[manglepath] 
blueprint = collective.transmogrifier.sections.inserter 
key = string:_path 
value = python:item['_path'].replace('/var/www/html', '/Plone/foo') 

因此,這需要回下相同的密鑰的value Python表達式的輸出(它使用項目_path並存儲

+0

由於馬亭。! – aclark

+0

嗯,這個工程很好的修復路徑,但後來我得到:2011-07-31 19:05:53警告collective.transmogrifier.constructor容器foo/vel不存在item /foo/vel/index.html。奇怪的是,因爲它似乎並不介意爲實際存在的內容創建文件夾(即,當您不破壞路徑時,預損壞路徑中的文件夾會很好地創建)。 – aclark

+0

創作者藍圖盟友喜歡按照路徑順序排序的東西,即文件夾第一。 transmogrify.pathsorter是爲了解決這個問題而寫的。它還爲具有給定_type的文件夾創建新項目。 – djay