[Zope] RE: Passing namespace to Python scrict was: how to call a n external module from a Python script?

Reif Peter gal@adv.magwien.gv.at
Wed, 26 Sep 2001 14:48:51 +0200


> From: Dieter Maurer *EXTERN* [mailto:dieter@handshake.de]
> 
> Reif Peter writes:
>  > ...
>  > My script:
>  > 
>  >   ...
>  >   ##bind namespace=namespace
>  >   ...
>  > 
>  >   zone = namespace.zone
>  >   return zone
>  > 
>  > It is called from a DTML-method where the tag <dtml-var 
> zone> is rendered
>  > correctly:
>  > 
>  >   ...
>  >   <dtml-var get_status_a>
>  >   ...
>  > 
>  > Error:
>  > 
>  > Zope Error
>  > Zope has encountered an error while publishing this resource.
>  > Error Type: AttributeError
>  > Error Value: zone
> How is it called?
> 
> Implicitly (<dtml-var myPythonScript>) or explicitly?
> 
> In the second case, you must pass the namespace yourself!
> In the first case, check in the binding tab that
> the binding really took place.
> 
>   PythonScripts are quite picky with the binding comments
>   at their start. A minor typo and part of the comments
>   are no longer recognized.
> 
My variable is named "zone". The following Python-statement yields 1:

	return namespace.has_key("zone")

The following calls yield an error (each one):

	return namespace.items()
	return namespace.keys()
	return getattr(namespace, "zone")

I am using Zope-2.4.0

---

A second test with explicit calling:

DTML method:

<dtml-let xy="test">
<dtml-var expr="get_status_a(ns=_)">
</dtml-let>


python script get_status_a:

## Script (Python) "get_status_a"
##bind container=container
##bind context=context
##bind namespace=namespace
##bind script=script
##bind subpath=traverse_subpath
##parameters=ns
##title=

return ns.has_key("xy")   # OK, yields 1
return ns.xy              # ERROR:  Error Type: AttributeError, Error Value:
xy