Aha! Nailed it. It's the 1.131 version of OFS/Application.py cvs log entry: ---------------------------- revision 1.131 date: 2000/08/02 17:31:54; author: brian; state: Exp; lines: +71 -46 branches: 1.131.4; Merged fix for products with old-style initialization not being properly filtered by permission in the filtered add list. ---------------------------- Ok, the problem is that when it sees an initialize() method, it stops looking for other stuff. ZSQLMethods has a __methods__ thing, tho. Oops. Patch appended to make it always look for __methods__. Note that it doesn't break ZSQLMethods from working, just from being added or edited. Argh. This would've been much easier to figure out if I hadn't managed to confuse myself (tooo many installations of zope, all slightly different - need to make it better :) Anthony >>> Anthony Baxter wrote > > The current Zope-2_2-branch and head of CVS is busted - you cannot add or > edit SQLMethods. It appears that Products.ZSQLMethods.__init__.__methods__ > doesn't get into the namespace of the product properly, as neither > the add or edit screens can see SQLConnectionIDs. > > Blah. More to come - I'll try to figure out why it's broken, and when. > > Anthony
Index: Application.py =================================================================== RCS file: /cvsroot/Zope/lib/python/OFS/Application.py,v retrieving revision 1.1.1.3 diff -u -r1.1.1.3 Application.py --- Application.py 2000/08/07 04:22:29 1.1.1.3 +++ Application.py 2000/08/10 12:41:15 @@ -507,20 +507,6 @@ meta_type['product']=productObject.id meta_types.append(meta_type) - for name,method in pgetattr( - product, 'methods', {}).items(): - if not hasattr(Folder, name): - setattr(Folder, name, method) - if name[-9:]!='__roles__': # not Just setting roles - if (permissions.has_key(name) and - not folder_permissions.has_key( - permissions[name])): - permission=permissions[name] - if new_permissions.has_key(permission): - new_permissions[permission].append(name) - else: - new_permissions[permission]=[name] - if new_permissions: new_permissions=new_permissions.items() for permission, names in new_permissions: @@ -528,6 +514,19 @@ new_permissions.sort() Folder.__dict__['__ac_permissions__']=tuple( list(Folder.__ac_permissions__)+new_permissions) + + for name,method in pgetattr(product, 'methods', {}).items(): + if not hasattr(Folder, name): + setattr(Folder, name, method) + if name[-9:]!='__roles__': # not Just setting roles + if (permissions.has_key(name) and + not folder_permissions.has_key( + permissions[name])): + permission=permissions[name] + if new_permissions.has_key(permission): + new_permissions[permission].append(name) + else: + new_permissions[permission]=[name] if os.environ.get('ZEO_CLIENT',''): # we don't want to install products from clients!