El proyecto en el que estoy trabajando usa el impresionante plugin Dexterity de Plone. Algunos de mis tipos de contenido personalizado tienen nombres muy específicos que deben calcularse. La forma en que originalmente había logrado esto antes era añadiendo plone.app.content.interfaces.INameFromTitle como un comportamiento en la entrada de configuración genérica del objeto, según las instrucciones del manual:¿Hay alguna manera de extender el comportamiento INameFromTitle de 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>
Entonces creó un adaptador que se proporcionaría 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
este método es muy similar a la sugerida en esta entrada del blog:
http://davidjb.com/blog/2010/04/plone-and-dexterity-working-with-computed-fields
Lamentablemente, este método dejó de funcionar después de plone.app.dexterity beta y ahora mis elementos de contenido no tienen sus nombres asignados correctamente.
¿Alguien sabe cómo extender el comportamiento INameFromTitle de Dexterity para casos de uso de nombres muy específicos?
¡Su ayuda es muy apreciada, gracias!