[Grok-dev] grok.Skin question.

Fernando Correa Neto fcdoth at gmail.com
Thu Jul 24 14:10:35 EDT 2008

Hey there,

Someone on IRC asked if I ever used z3c.form with grok and I decided
to give it a try by just using grok components.
In z3c.form, a lot of it's components are registered for
z3c.form.interfaces.IFormLayer. In order to create a form you
basically need to create a layer like:

from z3c.form.interfaces import IFormLayer
from z3c.layout.pagelet import IPageletBrowserLayer

class IMyFormLayer(IFormLayer, IPageletBrowserLayer):
    """a form layer"""

But then in your skin, you must inherit from IMyFormLayer AND
z3c.formui.interfaces.IDivFormLayer or
z3c.formui.interfaces.ITableFormLayer (depending on what you want in
your html).
So in terms of layers I think we are prettu much OK since we can do this:

class MyGrokLayer(IFormLayer, IPageletBrowserLayer):

But then when you declare your skin naively like this:

class MyGrokSkin(grok.Skin, IDivFormLayer):

It is raises a conflict error like this:

zope.configuration.xmlconfig.ZopeXMLConfigurationError: File
line 4.0-4.33
    ZopeXMLConfigurationError: File
line 5.2-5.27
    TypeError: Error when calling the metaclass bases
    metaclass conflict: the metaclass of a derived class must be a
(non-strict) subclass of the metaclasses of all its bases

So the question is: Would it be possible to create a skin in grok that
gets registered for anything else other than just IBrowserSkinType?
Does anyone know any pattern?

I am attaching my current app.py in case someone decides to take a look.

Best regards,

P.S: The test form is also subclassing grok.View for testing purposes
so I could just reach it through url.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: app.py
Type: application/octet-stream
Size: 1355 bytes
Desc: not available
Url : http://mail.zope.org/pipermail/grok-dev/attachments/20080724/73793e0e/app.obj

More information about the Grok-dev mailing list