Hello zope3 users!

I'm using Zope-3.3.1, and I'm trying to expose a method via xmlrpc and I'm having trouble supporting a variable number of kwargs. My use case does not know ahead of time how many arguments will be passed to the method, hence the use of **kwargs in the method signature.

I get the error:
Unexpected Zope exception: TypeError: renderCode() takes at most 1 argument (2 given).



The interface/class definitions with the method to be exposed are straight-forward:


class IToolCode(IFolder):
    """Code that is associated with a tool."""

    code = Text(
            title=u'Code',
            description=u'The code.',
            required=True,
            )

    def renderCode():
"""Use customization options posted via XMLRPC and ZPT to render customized code."""



class ToolCode(Folder):
    """See IToolCode."""
    implements(IToolCode)

    code = FieldProperty(IToolCode['code'])

    def renderCode(self, **kwargs):
        pt = PageTemplate()
        pt.write(self.code)
        return pt(customizations=kwargs)





The XMLRPC view uses zope.app.publisher.xmlrpc.MethodPublisher and is simple:

class ToolCodeXMLRPC(MethodPublisher):
    """An XMLRPC view for ToolCode objects."""

    def renderCode(self, **kwargs):
        return self.context.renderCode(kwargs)



The XMLRPC view is configured like so:

<xmlrpc:view
    for="src.interfaces.IToolCode"
    methods="renderCode"
    class="src.browser.views.ToolCodeXMLRPC"
    permission="src.ViewProtected"
    />



The XML posted by my JavaScript also seems to be appropriate:
<?xml version="1.0"?>
<methodCall>
<methodName>renderCode</methodName>
<params>

<param>
<value>
<struct>
<member><name>color</name><value><string>blue</string></value></member>
<member><name>number</name><value><string>1</string></value></member>
</struct>
</value>
</param>

</params>
</methodCall>


I'm at a loss for what I am missing. Has anyone successfully exposed a method via XMLRPC that used **kwargs?

Thanks for any advice!
-Jer
_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users

Reply via email to