[Zope] Problem with passing objects from External Methods

Chris McDonough chrism@digicool.com
Tue, 10 Apr 2001 18:07:36 -0400


Hi Jason,

This is a stumper.  But there's a solution.  Rewrite your external
method to look like this:

import string, regex
from AccessControl import ClassSecurityInfo
from Acquisition import Implicit
import Globals

class element(Implicit):
   security = ClassSecurityInfo()
   security.declareObjectPublic()
   security.setDefaultAccess('allow')

def passthis(passed):
    info = []
    structures = string.split(passed)
    for structure in structures:
       bit = element()
       bit.data = foo
       bit.source = structure
       info.append(bit)
    return(info)

Globals.InitializeClass(element)

For more info on why this is necessary, see
http://dev.zope.org/Wikis/DevSite/Projects/DeclarativeSecurity/ZopeSecurityForDevelopers

HTH,

- C


> def passthis(passed):
>    class element:
>       pass
>    info = []
>    structures = string.split(passed)
>    for structure in structures:
>       bit = element()
>       ## Get Information here, and store it in foo.
>       bit.data = foo
>       bit.source = structure
>       info.append(bit)
>    return(info)
> 
> ---

Jason Joy wrote:
> 
> This one has been driving me a bit crazy and I think there is a simple
> solution to this.  I have written an external method to return a list of
> objects back to a DTML method which executes the code via a dtml-in.
> 
> The dtml code looks like:
> 
> <dtml-in processMethod(passthis)>
> <dtml-var sequence-index><dtml-var data><BR>
> </dtml-in>
> 
> And this is passthis.py:
> 
> import string, regex
> 
> def passthis(passed):
>    class element:
>       pass
>    info = []
>    structures = string.split(passed)
>    for structure in structures:
>       bit = element()
>       ## Get Information here, and store it in foo.
>       bit.data = foo
>       bit.source = structure
>       info.append(bit)
>    return(info)
> 
> ---
> 
> When I run the code, I get a box that asks me to revalidate my Zope login and
> nothing works, finally, the system gives up and gives me an error with this at
> the bottom:
> 
> File /usr/local/Zope-2.3.0/lib/python/AccessControl/ZopeSecurityPolicy.py,
> line 168, in validate
> Unauthorized: data
> 
> Does anyone have any advice on this one?  This is an example of what I am
> doing and I need to pass a list of objects (with about 10 properties on each)
> to be run through a dtml-in.
> 
> Thanks,
> 
> Jason
> 
> ____________________________________________________________________
> Get free email and a permanent address at http://www.netaddress.com/?N=1
> 
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )