template issue with WidgetTemplate of megrok.z3cform.base

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

template issue with WidgetTemplate of megrok.z3cform.base

jmichiel
I'm declaring a widget template like this:

import megrok.z3cform.base as z3cform

class DictDisplayWidgetTemplate(z3cform.WidgetTemplate):
    grok.context(Interface)
    grok.template('widgets_templates/dict_display.pt')
    z3cform.directives.widget(DictDisplayWidget)
    z3cform.directives.mode(z3cform.DISPLAY_MODE)

Starting my server however results in this traceback:

  File "d:\git\qcpython\art\server\eggs\megrok.z3cform.base-0.3-py2.6.egg\megrok\z3cform\base\meta.py", line 71, in execute
    template = os.path.join(template_path, template)
  File "C:\Python26\lib\ntpath.py", line 73, in join
    elif isabs(b):
  File "C:\Python26\lib\ntpath.py", line 58, in isabs
    return s != '' and s[:1] in '/\\'
zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "D:\Git\QCPython\ART\Server\parts\etc\site.zcml", line 4.2-4.28
    ZopeXMLConfigurationError: File "d:\git\qcpython\art\server\src\arts\configure.zcml", line 11.2-11.27
    TypeError: 'in <string>' requires string as left operand, not tuple

apparently, the 'template' parameter that is given to the execute method in megrok.z3cform.base's meta.py is a tuple containing ('arts.browser.widgets', 'widgets_templates/dict_display.pt'), and not a string.

I could solve this by adding

        if isinstance(template, tuple):
            template = template[1]

to megrok.z3cform.base's meta.py

However, I think I'm doing something wrong in the first place: perhaps grok.template is not the way to do this?