カップルを保存する構成パネルをPloneコントロールパネルに構築する必要があり、Plone3でplone.app.registryを使用したいと思います。
ユーザーインターフェイスに限定すると、これを自動的に構築するスキーマインターフェイスを定義するのは非常に簡単です。
class IMyPair(Interface):
value = schema.TextLine(title=u"value", required=True)
title = schema.TextLine(title=u"title", required=False)
class MyPair(object):
implements(IMyPair)
def __init__(self, value='', title=''):
self.value = value
self.title = title
class IMyConfigPanel(Interface):
entry = schema.List(
title=_(u'Foo'),
value_type=schema.Object(IMyPair, title=u"entry"),
required=True
)
これは、portal_properties内のカップルを単一の文字列(区切り文字付き)として格納するプロジェクトであるため、使用しました。
plone.app.registryでこのアプローチ( "value_type = schema.Object"を使用)を使用すると、IObjectFieldにIPersistentアダプターが定義されていないため、例外が発生します。
深く掘り下げて自分のアダプターを提供することに夢中になる前に、問題の最初のニーズに到達するためのより簡単な方法はありますか?