[Zope] external methods, returning objects...argh!
andres@corrada.com
andres@corrada.com
Tue, 5 Jun 2001 14:59:24 -0400
So, have you tried proxying the dtml object as manager to see if the
authorization problem goes away?
On Tue, Jun 05, 2001 at 04:32:56PM +0200, Gerrie Roos wrote:
> This is the setup:
>
> **childLookup (python method):**
>
> branches = context.childBranchesLookup(BranchParent = parentBranch)
> tags = context.childTagsLookup(BranchName = parentBranch)
> #these above are ZSQL results...
>
> result = context.createNodeObj(branchResult = branches, tagResult =
> tags)
>
> return result
>
>
> **createNodeObj (external method, calling createNodeObj):**
>
> class _dummy:
> def __init__(self, name):
> self.name=name
>
> def createNodeObj(branchResult, tagResult):
> c = []
> for branch in branchResult.dictionaries():
> c.append(_dummy(branch["BranchName"]))
> for tag in tagResult.dictionaries():
> c.append(_dummy(tag["CVSTagNo"]))
> return c
>
>
> So the idea is to call childLookup, which passes ZSQL results on to
> createNodeObj, and createNodeObj generates a list of objects and returns
> it. I know, I know I could've done it with an external method only...I
> only learnt that too late. Now I can't work with the resulting list of
> objects in Zope!
>
> for instance:
>
> <dtml-in expr="childLookup(parentBranch = 'Main')">
> <dtml-var name>
> </dtml-in>
>
> results in:
>
> 'Authorization failed. Retry? ' popup in my browser. Then cancelling I
> get the following trace:
>
> Zope Error
>
> Zope has encountered an error while publishing this resource.
>
> Unauthorized
>
> Sorry, a Zope error occurred.
>
> Traceback (innermost last):
> File
> /usr2/GnatsPkg/src/Zope-2.3.0-src/lib/python/ZPublisher/Publish.py, line
> 222, in publish_module
> File
> /usr2/GnatsPkg/src/Zope-2.3.0-src/lib/python/ZPublisher/Publish.py, line
> 187, in publish
> File
> /usr2/GnatsPkg/src/Zope-2.3.0-src/lib/python/ZPublisher/Publish.py, line
> 171, in publish
> File
> /usr2/GnatsPkg/src/Zope-2.3.0-src/lib/python/ZPublisher/mapply.py, line
> 160, in mapply
> (Object: test_index_html)
> File
> /usr2/GnatsPkg/src/Zope-2.3.0-src/lib/python/ZPublisher/Publish.py, line
> 112, in call_object
> (Object: test_index_html)
> File
> /usr2/GnatsPkg/src/Zope-2.3.0-src/lib/python/OFS/DTMLDocument.py, line
> 189, in __call__
> (Object: test_index_html)
> File
> /usr2/GnatsPkg/src/Zope-2.3.0-src/lib/python/DocumentTemplate/DT_String.py,
> line 538, in __call__
> (Object: test_index_html)
> File
> /usr2/GnatsPkg/src/Zope-2.3.0-src/lib/python/DocumentTemplate/DT_In.py,
> line 711, in renderwob
> (Object: childLookup(parentBranch = 'Main'))
> File
> /usr2/GnatsPkg/src/Zope-2.3.0-src/lib/python/OFS/DTMLMethod.py, line
> 261, in validate
> (Object: test_index_html)
> File
> /usr2/GnatsPkg/src/Zope-2.3.0-src/lib/python/AccessControl/SecurityManager.py,
> line 144, in validate
> File
> /usr2/GnatsPkg/src/Zope-2.3.0-src/lib/python/AccessControl/ZopeSecurityPolicy.py,
> line 168, in validate
> Unauthorized: name
>
> So can't I return a list of objects from an external method?
>
> How will one then get the example of dtml-tree with external methods
> shown in
> http://www.zope.org/Members/anthony/tree-coding-tricks
> to work?
>
> Thanks!
>
>
> _______________________________________________
> 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 )
>
--
------------------------------------------------------
Andres Corrada-Emmanuel Email: andres@corrada.com
Internet Programming http://www.mamey.com
------------------------------------------------------