адаптеры archetype.schemaextender и Grok

Как можно зарегистрировать archetypes.schemaextenders с five.grok.

Попытка:

class QuickNavExtender(grok.Adapter):
    """
    Define schema fiddler which injects a new field to every item.
    """

    # This field comes on every AT content item
    grok.adapts(ISchemaExtender)
    grok.provider(ISchemaExtender)
    grok.context(IBaseContent)

    #adapts(IBaseContent)
    implements(ISchemaExtender)    

    fields = [
            ExtensionBooleanField("quicknav",
                widget = atapi.BooleanWidget(
                    label="Quick jump navigation",
                    description="Allow in-page jumping by navigation links"
                ),

                # On which edit tab this field appears
                schemata = "settings"
            )
    ]

... не снимается.

Но если вы добавите этот фрагмент ZCML и отмените регистрацию в стиле Zope 3, это сработает:

<adapter factory=".extender.QuickNavExtender"
   provides="archetypes.schemaextender.interfaces.ISchemaExtender" />

person Mikko Ohtamaa    schedule 10.05.2012    source источник


Ответы (1)


Я думаю, вы хотите:

class QuickNavExtender(grok.Adapter):
    grok.context(IBaseContent)
    grok.implements(ISchemaExtender)
    # fields here...
person David Glick    schedule 10.05.2012