私が取り組んでいるプロジェクトは、Ploneのすばらしい敏捷性プラグインを使用しています。いくつかの私のカスタムコンテンツタイプは、計算しなければならない非常に特殊な名前を持っています。私はもともと前にこれを達成した方法は、マニュアルの指示に従って、オブジェクトの汎用的な設定項目での動作としてplone.app.content.interfaces.INameFromTitleを追加することであった。Plone DexterityのINameFromTitleの動作を拡張する方法はありますか?
<?xml version="1.0"?>
<object name="avrc.aeh.cycle" meta_type="Dexterity FTI">
...
<property name="schema">myproject.mytype.IMyType</property>
<property name="klass">plone.dexterity.content.Item</property>
...
<property name="behaviors">
<element value="plone.app.content.interfaces.INameFromTitle" />
</property>
...
</object>
は、それから私は、そのアダプタを作成しましたINameFromTitleを提供する:
from five import grok
from zope.interface import Interface
import zope.schema
from plone.app.content.interfaces import INameFromTitle
class IMyType(Interface):
foo = zope.schema.TextLine(
title=u'Foo'
)
class NameForMyType(grok.Adapter):
grok.context(IMyType)
grok.provides(INameFromTitle)
@property
def title(self):
return u'Custom Title %s' % self.context.foo
このメソッドは、このブログ記事で提案されているものと非常に似ています
http://davidjb.com/blog/2010/04/plone-and-dexterity-working-with-computed-fields
残念ながら、このメソッドはplone.app.dexterity betaの後に動作しなくなりましたが、今度はコンテンツアイテムの名前が正しく割り当てられません。
非常に具体的な命名ユースケースに対して、敏捷性のINameFromTitle動作を拡張する方法を知っている人はいますか?
ご協力いただきありがとうございます!