plonez3c.formzope.interface

Querying adapters against plone.directives.form.Schema


I have a form model created as following:

from plone.app.directives import Form

class IFormSchema(form.Schema):

    foobar = schema.Bool(title=u"Just another field")

I'd like to register an adapter against this definition:

@component.adapter(IFormSchema)
@interface.implementer(ITreeSelectURLProvider)
def TreeSourceURL():
    """
    """
    return "http://foobar"

The registration goes correctly.

However, there is an issue that I don't know if IFormSchema is directly provided by any object in any point of z3c.form processing chain, so that I could call:

 provider = ITreeSelectURLProvider(someObject)

To make matters worse, the context in the question is not a real content item but a subform object.


Solution

  • Dexterity make sure that the schema interface (be that defined on the filesystem and referenced in the FTI, or defined through the web or in an XML file) is provided by instances of the content type.

    This isn't really about forms, it's about Dexterity. The form.Schema base class is just a marker that extends Interface, and which allows some of plone.autoform's processing to take place at configuration time.