Il progetto su cui sto lavorando utilizza l'impressionante plug-in di Destrezza di Plone. Un paio di miei tipi di contenuti personalizzati hanno nomi molto specifici che devono essere calcolati. Il modo in cui avevo inizialmente compiuto questo prima era con l'aggiunta di plone.app.content.interfaces.INameFromTitle come un comportamento in ingresso di impostazione generica dell'oggetto, secondo le istruzioni del manuale:C'è un modo per estendere il comportamento INameFromTitle di Plone Dexterity?
<?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>
Poi ho creato un adattatore che fornirebbe 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
questo metodo è molto simile a quello suggerito in questo post del blog:
http://davidjb.com/blog/2010/04/plone-and-dexterity-working-with-computed-fields
Sfortunatamente, questo metodo ha smesso di funzionare dopo plone.app.dexterity beta e ora i miei elementi di contenuto non hanno il nome assegnato correttamente.
Qualcuno potrebbe sapere come estendere il comportamento INameFromTitle di Dexterity per casi d'uso di denominazione molto specifici?
Il vostro aiuto è molto apprezzato, grazie!