<snip>
I found a way to test if the "ExternalMethod" really returned a dict here:
http://infrae.com/mailman_/pipermail/silva-dev/2004q2/001091.html
And you were right! This is not seen as as a valid dictionary (nor is it
seen as a string):
stuff = container.externalmethod(feedurl=feedurl)
test = same_type(stuff, {})
print test
return printed
returns "0"
However, interestingly enough, if I copy and paste the all the text that
is returned by the external method into the script, I am able to confirm
that it is a dictionary:
stuff= {'lastbuilddate': u'Mon, 24 Jul 2006 12:06:18 EDT', u'subtitle':
'U.S.',
u'generator': 'NPR/RSS Generator 2.0 etc...'}
test = same_type(stuff, {})
print test
return printed
returns "1"
Also, I tried to render the copied text from the external method using the
page template, and received a different error message:
"TypeError: string indices must be integers" (see the attached traceback).
I don't know if this last test will be useful, but I thought I'd give it
a try.
Do you know if there is a way of changing the data type of an object?
Do you know if there is a listing of data types that I could test for?
</snip>
There is an easy, but potentially dangerous way to turn a string
representative of a python dictionary back into a 'real' python
dictionary... only do this if you are sure of the contents of the
dictionary: in an external method:
def string2dict(instr):
dict = {}
dict['__builtins__'] = None
return eval(instr, dict)
hth
Jonathan
Thanks kindly,
John T.
--------------------------------------------------------------------------------
_______________________________________________
Zope maillist - Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope-dev )
_______________________________________________
Zope maillist - Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope-dev )