Я использую archetypes.schemaextender для расширения схемы ATEvent, чтобы добавить ImageField.
Это работает.
Теперь я хочу добавить метод «tag» в ATEvent, чтобы использовать «новый» способ масштабирования изображений.
Итак, я делаю это:
В файле extender.py:
from Products.CMFCore.permissions import View
from AccessControl import ClassSecurityInfo
from zope.interface import Interface
class IImageExtender(Interface):
""" """
def tag():
""" """
class ImageExtender(object):
""" """
implements(IImageExtender)
security = ClassSecurityInfo()
def __init__(self, context):
self.context = context
security.declareProtected(View, 'tag')
def tag(self, **kwargs):
"""Generate image tag using the api of the ImageField
"""
return self.getField('image').tag(self, **kwargs)
После этого в файле configure.zcml:
<adapter for="Products.ATContentTypes.interface.IATEvent"
provides=".extender.IImageExtender"
factory=".extender.ImageExtender" />
Но это не работает.
Я получаю эти ошибки:
Module zope.tales.pythonexpr, line 59, in __call__
- __traceback_info__: ( path('nocall:item_object/tag')(scale=size, css_class='tileImage'))
Module <string>, line 1, in <module>
Module zope.tales.pythonexpr, line 77, in __call__
Module zope.tales.expressions, line 217, in __call__
Module zope.tales.expressions, line 194, in _eval
Module zope.tales.expressions, line 217, in __call__
Module zope.tales.expressions, line 194, in _eval
Module zope.tales.expressions, line 124, in _eval
Module zope.pagetemplate.engine, line 66, in __call__
Module zope.traversing.adapters, line 136, in traversePathElement
- __traceback_info__: (<ATEvent at /Plone/manifestations/visites-conferences/conf>, 'tag')
Module zope.traversing.adapters, line 50, in traverse
- __traceback_info__: (<ATEvent at /Plone/manifestations/visites-conferences/conf>, 'tag', [])
LocationError: (<ATEvent at /Plone/manifestations/visites-conferences/conf>, 'tag')
Есть какие-нибудь подсказки?
Спасибо.