Re: [Zope-dev] Calling Catalog from python script

2001-02-16 Thread R. David Murray

On Fri, 16 Feb 2001, R. David Murray  wrote:
 Howevever, I'm still getting 'None' as the result.  If I print out, say,
 catent.id, I see the correct ID for the object I'm trying to retrieve.
 
 It doesn't make sense that this is failing.  I must be doing something
 stupid but I still can't see it.  I tried calling getObject both with
 and without REQUEST as a parameter, with the same result.
 
 I guess it's time for some more source spelunking.

And the expedition was a qualified success.  It turns out that
getObject has one of those nasty unadorned try: except: structures
in it.  It was masking an authorization error.  The auth error
is occuring in urestrictedTraverse, and the last lines of my traceback
are:

  File /usr/local/zope/Zope230/lib/python/OFS/Traversable.py, line 190, in unrestr
ictedTraverse
(Object: ApplicationDefaultPermissions)
Unauthorized: 0060175400

0060175400 is the ID of the first object returned by the catalog.

Any guesses why this is happening?  I get the same result whether I'm anonymous
or logged in as a manager.

Also, anyone want to guess why getObject uses try/except?  I can't off
the top of my head think of any reason it should be there.

This is 2.3.0, I suppose I should try the new beta just for kicks...

--RDM


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] Calling Catalog from python script

2001-02-16 Thread R. David Murray

On Fri, 16 Feb 2001, Steve Alexander wrote:
  This is 2.3.0, I suppose I should try the new beta just for kicks...
 
 Yes, do try the new beta. If this is what I think it is, it is fixed in the latest
 2.3, as I submitted the patch that fixed it :-)
 
 Are your objects traversed to through an object that does __bobo_traverse__
 -- like a ZPatterns Specialist, for example?

Yes, the items come out of a Specialist.

However, upgrading to 2.3.1b1 did not solve the problem.  I don't see any
changes to getObject.

 The patch to ZCatalog brains makes it fall back on resolve_url, which works
 just fine.

So I changed getObject to wrap the try/except around only the restrictedTraverse
call and moved the call to resovle_url outside that, and that seems to
have fixed the problem.

Thanks, Steve!  You might want to look to see where your patch went,
though wry grin.

--RDM


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] Calling Catalog from python script

2001-02-15 Thread Erik Enge

[[EMAIL PROTECTED]]

| Where did getobject come from? I know about Catalog.data, but I've never
| seen a getobject() method...
 
It's a method of the brain ;).  If you have a data_record_id, you can
use getobject() to retrieve the object it represents.

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



[Zope-dev] Calling Catalog from python script

2001-02-14 Thread R. David Murray

I'll probably figure this out as soon as I post like last time, but I've
been staring at it and can't see my mistake.  The following code returns
a list of None's:

objs = []
for catent in container.Catalog(context.REQUEST):
  objs.append(container.Catalog.getobject(catent.data_record_id_))
return objs

I've checked, and catent is a mybrains instance and catent.data_record_id_
has an increasing number as its value.  So why doesn't this work? 

Also, and this is a better reason for posting this to zope-dev than
asking for help is grin: why can't I say

  catent.getobject()

That would seem to be a lot more OOish.

This is under Zope-2.3.0, by the way.

--RDM


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] Calling Catalog from python script

2001-02-14 Thread richard

"R. David Murray" wrote:
 objs = []
 for catent in container.Catalog(context.REQUEST):
   objs.append(container.Catalog.getobject(catent.data_record_id_))
 return objs
 
 I've checked, and catent is a mybrains instance and catent.data_record_id_
 has an increasing number as its value.  So why doesn't this work?

Where did getobject come from? I know about Catalog.data, but I've never
seen a getobject() method...


 Also, and this is a better reason for posting this to zope-dev than
 asking for help is grin: why can't I say
 
   catent.getobject()
 
 That would seem to be a lot more OOish.

I agree - I'm working with Catalog at the moment, and the whole brain thing
confuses the hell out of me :)


Richard

-- 
Richard Jones
[EMAIL PROTECTED]
Senior Software Developer, Bizar Software (www.bizarsoftware.com.au)

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] Calling Catalog from python script

2001-02-14 Thread Steve Alexander

[EMAIL PROTECTED] wrote:

  "R. David Murray" wrote:

  catent.getobject()
 
  That would seem to be a lot more OOish.

In 2.3 you can call catent.getObject(). You can pass an optional REQUEST 
in as an argument, to support lookup via resolve_url rather than 
restrictedTraverse.

--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] Calling Catalog from python script

2001-02-14 Thread Casey Duncan

"R. David Murray" wrote:
 
 I'll probably figure this out as soon as I post like last time, but I've
 been staring at it and can't see my mistake.  The following code returns
 a list of None's:
 
 objs = []
 for catent in container.Catalog(context.REQUEST):
   objs.append(container.Catalog.getobject(catent.data_record_id_))
 return objs
 
 I've checked, and catent is a mybrains instance and catent.data_record_id_
 has an increasing number as its value.  So why doesn't this work?
 
 Also, and this is a better reason for posting this to zope-dev than
 asking for help is grin: why can't I say
 
   catent.getobject()
 
 That would seem to be a lot more OOish.
 
 This is under Zope-2.3.0, by the way.
 
 --RDM
 
That code looks pretty good to me. Did you try updating the Catalog?
Also, what happens if just append catent. Do you get something other
than None then? I would assume so, but it might help to see exactly what
the meta data is to identify the objects it "should" return.

I agree that getobject should be a method of the result item, although
implementing it might be a bit tricky to do. I looked into that a while
back. Perhaps I should take another look at that...

-- 
| Casey Duncan
| Kaivo, Inc.
| [EMAIL PROTECTED]
`--

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



RE: [Zope-dev] Calling Catalog from python script

2001-02-14 Thread Randall F. Kern

What's wrong with AbstractCatalogBrain.getObject()?  Doesn't that work?

-Randy

 -Original Message-
 From: Casey Duncan [mailto:[EMAIL PROTECTED]]
 Sent: Wednesday, February 14, 2001 3:45 PM
 To: R. David Murray; [EMAIL PROTECTED]
 Subject: Re: [Zope-dev] Calling Catalog from python script
 
 
 "R. David Murray" wrote:
  
  I'll probably figure this out as soon as I post like last 
 time, but I've
  been staring at it and can't see my mistake.  The following 
 code returns
  a list of None's:
  
  objs = []
  for catent in container.Catalog(context.REQUEST):
objs.append(container.Catalog.getobject(catent.data_record_id_))
  return objs
  
  I've checked, and catent is a mybrains instance and 
 catent.data_record_id_
  has an increasing number as its value.  So why doesn't this work?
  
  Also, and this is a better reason for posting this to zope-dev than
  asking for help is grin: why can't I say
  
catent.getobject()
  
  That would seem to be a lot more OOish.
  
  This is under Zope-2.3.0, by the way.
  
  --RDM
  
 That code looks pretty good to me. Did you try updating the Catalog?
 Also, what happens if just append catent. Do you get something other
 than None then? I would assume so, but it might help to see 
 exactly what
 the meta data is to identify the objects it "should" return.
 
 I agree that getobject should be a method of the result item, although
 implementing it might be a bit tricky to do. I looked into 
 that a while
 back. Perhaps I should take another look at that...
 
 -- 
 | Casey Duncan
 | Kaivo, Inc.
 | [EMAIL PROTECTED]
 `--
 
 ___
 Zope-Dev maillist  -  [EMAIL PROTECTED]
 http://lists.zope.org/mailman/listinfo/zope-dev
 **  No cross posts or HTML encoding!  **
 (Related lists - 
  http://lists.zope.org/mailman/listinfo/zope-announce
  http://lists.zope.org/mailman/listinfo/zope )
 

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )