ZClass problem in 2.8 (Was: Re: [Zope-dev] Upcoming Zope 2.8 release)
John Barratt
jlb at ball.langarson.com.au
Mon Jun 6 20:08:56 EDT 2005
Andreas Jung wrote:
> <dieter at handshake.de> wrote:
>> What about the ZClasses?
> Jim fixed them (hopefully :-))
They don't work for me in 2.8... :-(
I can't shake a new permission problem when trying to add a ZClass
instance in 2.8b2. This is a 2.8 specific problem as the same process
works in 2.7.6. For reference, the recently enabled tests for ZClasses
all pass fine. This is a problem wether python or C security control is
enabled via zope.conf. Also this was always tried with a 'fresh' ZODB.
From a bit of digging through the code it seems there is a difference
comes about in the call on line 166 of AccessControl.User inside
_check_context :
return object.aq_inContextOf(context, 1)
In Zope 2.8 it returns 0, in 2.76 it returns 1 with the steps below. I
don't know how to even start to try to debug inside this C based method?
Below are the steps I used to reproduce this problem. This was on a
Fedora Core 3 x86_64 server with a fresh Zope & Python compile :
- Open the ZMI and login as a user with 'Manager' permissions.
- Goto : /Control_Panel/Products/
- Add a new Product 'AAA'
- Go to the Product : /Control_Panel/Products/AAA/
- Add a new 'Z Class' :
id=ZZZ
title=ZZZ
meta type=ZZZ
'Create Constructor objects' checked
'Included standard Zope persistent object base classes' checked.
- Goto the Root Folder
- Goto the Security Tab
- Give 'Manager' permission to 'Add ZZZs'
- Goto the Root Folder
- Try to add an instance of a 'ZZZ':
- Zope 2.7.6 succeeds no problem.
- Zope 2.8.0-b2 (and b1) you get a http auth login form come up.
- You get the same behaviours with Python 2.3.5 and 2.4.1.
I also tried a quick hack to make the above method always return 1 in
Zope 2.8, but another error is then encountered whilst trying to add the
ZClass instance :
* Module ZPublisher.Publish, line 187, in publish_module_standard
* Module ZPublisher.Publish, line 144, in publish
* Module ZPublisher.Publish, line 107, in publish
* Module Zope2.App.startup, line 248, in recordMetaData
* Module OFS.Traversable, line 104, in getPhysicalPath
* Module App.FactoryDispatcher, line 90, in __getattr__
AttributeError: getPhysicalPath
I didn't see anything different you 'need' to do with 2.8 WRT ZClasses
for this to work, but I suppose I could have missed something! One
other note is that I have also only been able to try this on 64 bit
platforms (Solaris 10 and FC3 as above).
Thanks for any help. I hope this can be resolved before 2.8 goes final!
JB.
More information about the Zope-Dev
mailing list