[Grok-dev] change WidgetInputErrorView

Jens Adner j.adner at fh-sm.de
Tue Jul 31 10:21:18 UTC 2012

Hi to all,

I'm using grok for more then 4 years now and I'm very lucky with my app,
based on grok-1.0.

Now, I'm working on a new app based on the current grok.

All is fine and I have good results so far.

I need a little help from you, after searching the web for solutions.
And this ist my problem:

I want to use the great css-framework "yaml" in grok. yaml defines some
css-styles, an error class is one of them.

Without changing the yaml-css, I have to change the standard zope
snipped html-code (<span class="error">%s</span>'), showing as result of
an error in a input widget.
How can I change the class-attribute in the WidgetInputErrorView or
other parts?

And this is what I tried:

from zope.formlib.interfaces import IWidgetInputErrorView
from zope.interface import Invalid
from zope.i18n import translate
from cgi import escape

class MyWidgetErrorView(grok.Adapter):
    "change the class attribute"
    grok.implements(IWidgetInputErrorView) # the new interface provided

    def snippet(self):
        """Use a different class than the default zope input error view"""
        message = self.context.doc()
        translated = translate(message, context=self.request,
        return u'<span class="form-error">%s</span>' % escape(translated)

The new class should be "form-error" or something else.
I thought that's all, but it's of course not working ;-)

Here I have not enough Knowledge of adapters oder interfaces and how
this work together. How can I this modified WidgetInputErrorview work in
my views? Is this the right way or am I completely wrong?

Kind regards from Germany

+++++ Jens Adner, Rechenzentrum der FH Schmalkalden  +++++
+++++ Fon: +49 3683688 9201  Fax: +49 3683688 989201 +++++

More information about the Grok-dev mailing list