2

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に置き換えられ、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を返します。バイト文字列を使用すると、正しいオブジェクトが返されます。これは敏捷性との非互換性ですか、それとも私は何か間違ったことをしていますか?

4

1 に答える 1

1

これは、quintagroup.transmogrifierパッケージの作成者に報告する必要があるバグです。パスは、Unicodeオブジェクトではなく、常にASCIIバイト文字列である必要があります。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)

Plone.orgの専用の課題追跡システムに報告して、作成者が修正できるようにします。

于 2011-06-09T19:38:10.330 に答える