[Zope-Checkins] SVN: Zope/trunk/ - removed old-style product metadata support

Yvo Schubbe y.2005- at wcm-solutions.de
Mon Oct 31 05:35:25 EST 2005


Log message for revision 39763:
  - removed old-style product metadata support
  - removed all dependencies on that support

Changed:
  U   Zope/trunk/doc/CHANGES.txt
  U   Zope/trunk/lib/python/OFS/Application.py
  UU  Zope/trunk/lib/python/OFS/tests/testProductInit.py
  UU  Zope/trunk/lib/python/Products/ZGadflyDA/__init__.py
  UU  Zope/trunk/lib/python/Products/ZSQLMethods/__init__.py

-=-
Modified: Zope/trunk/doc/CHANGES.txt
===================================================================
--- Zope/trunk/doc/CHANGES.txt	2005-10-31 10:35:06 UTC (rev 39762)
+++ Zope/trunk/doc/CHANGES.txt	2005-10-31 10:35:24 UTC (rev 39763)
@@ -58,6 +58,9 @@
 
     Other
 
+      - OFS Application: Removed support for long deprecated old-style product
+        metadata in the __init__.py of products.
+
       - ZSQLMethod.manage_main: Moved the error message that warns of a
         non-existing or closed database connection next to the Connection ID
         dropdown and present it using red to increase its visibility.

Modified: Zope/trunk/lib/python/OFS/Application.py
===================================================================
--- Zope/trunk/lib/python/OFS/Application.py	2005-10-31 10:35:06 UTC (rev 39762)
+++ Zope/trunk/lib/python/OFS/Application.py	2005-10-31 10:35:24 UTC (rev 39763)
@@ -734,7 +734,6 @@
     path_join=os.path.join
     isdir=os.path.isdir
     exists=os.path.exists
-    DictType=type({})
     global_dict=globals()
     silly=('__doc__',)
 
@@ -755,7 +754,7 @@
             # like icon images.
             misc_=pgetattr(product, 'misc_', {})
             if misc_:
-                if type(misc_) is DictType:
+                if isinstance(misc_, dict):
                     misc_=Misc_(product_name, misc_)
                 Application.misc_.__dict__[product_name]=misc_
 
@@ -770,61 +769,11 @@
                 product, product_name, package_dir, app)
             context=ProductContext(productObject, app, product)
 
-            # Look for an 'initialize' method in the product. If it does
-            # not exist, then this is an old product that has never been
-            # updated. In that case, we will analyze the product and
-            # build up enough information to do initialization manually.
+            # Look for an 'initialize' method in the product.
             initmethod=pgetattr(product, 'initialize', None)
             if initmethod is not None:
                 initmethod(context)
 
-            # Support old-style product metadata. Older products may
-            # define attributes to name their permissions, meta_types,
-            # constructors, etc.
-            permissions={}
-            new_permissions={}
-            for p in pgetattr(product, '__ac_permissions__', ()):
-                permission, names, default = (
-                    tuple(p)+('Manager',))[:3]
-                if names:
-                    for name in names:
-                        permissions[name]=permission
-                elif not folder_permissions.has_key(permission):
-                    new_permissions[permission]=()
-
-            for meta_type in pgetattr(product, 'meta_types', ()):
-                # Modern product initialization via a ProductContext
-                # adds 'product' and 'permission' keys to the meta_type
-                # mapping. We have to add these here for old products.
-                pname=permissions.get(meta_type['action'], None)
-                if pname is not None:
-                    meta_type['permission']=pname
-                meta_type['product']=productObject.id
-                meta_type['visibility'] = 'Global'
-                meta_types.append(meta_type)
-
-            for name,method in pgetattr(
-                product, 'methods', {}).items():
-                if not hasattr(Folder.Folder, name):
-                    setattr(Folder.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:
-                    folder_permissions[permission]=names
-                new_permissions.sort()
-                Folder.Folder.__ac_permissions__=tuple(
-                    list(Folder.Folder.__ac_permissions__)+new_permissions)
-
             if not doInstall():
                 transaction().abort()
             else:

Modified: Zope/trunk/lib/python/OFS/tests/testProductInit.py
===================================================================
--- Zope/trunk/lib/python/OFS/tests/testProductInit.py	2005-10-31 10:35:06 UTC (rev 39762)
+++ Zope/trunk/lib/python/OFS/tests/testProductInit.py	2005-10-31 10:35:24 UTC (rev 39763)
@@ -44,16 +44,18 @@
 # backslashes, the backslashes get treated *as* backslashes instead of as
 # string escape codes.
 dummy_product_init = """
+misc_ = {'a':1}
+def amethod(self):
+    pass
 def initialize(context):
     f=open(r'%s', 'w')
     f.write('didit')
     f.close()
-misc_ = {'a':1}
-def amethod(self):
-    pass
-methods = {'amethod':amethod}
-__ac_permissions__ = ( ('aPermission', (), () ), )
-meta_types = ( {'name':'grabass', 'action':'amethod'}, )
+    context.registerClass(
+        meta_type='grabass',
+        permission='aPermission',
+        constructors=(amethod,),
+        legacy=(amethod,))
 """
 
 def getSchema():
@@ -195,13 +197,18 @@
         self.assert_(os.path.exists(doneflag))
         # Methods installed into folder
         self.assert_(hasattr(Folder, 'amethod'))
-        # __ac_permissions__ put into folder
-        self.assert_( ('aPermission', (),)  in
-                       Folder.__ac_permissions__)
+        # permission roles put into folder
+        self.assert_(hasattr(Folder, 'amethod__roles__'))
         # Products.meta_types updated
-        self.assert_( {'action': 'amethod', 'product': 'abaz',
-                       'name': 'grabass', 'visibility': 'Global'}
-                      in meta_types)
+        self.assert_( {'name': 'grabass',
+                       'action': 'manage_addProduct/abaz/amethod',
+                       'product': 'abaz',
+                       'permission': 'aPermission',
+                       'visibility': 'Global',
+                       'interfaces': (),
+                       'instance': None,
+                       'container_filter': None}
+                      in Products.meta_types)
 
     def test_install_products(self):
         self.makeFakeProducts()


Property changes on: Zope/trunk/lib/python/OFS/tests/testProductInit.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.3
Name: svn:keywords
   + Id

Modified: Zope/trunk/lib/python/Products/ZGadflyDA/__init__.py
===================================================================
--- Zope/trunk/lib/python/Products/ZGadflyDA/__init__.py	2005-10-31 10:35:06 UTC (rev 39762)
+++ Zope/trunk/lib/python/Products/ZGadflyDA/__init__.py	2005-10-31 10:35:24 UTC (rev 39763)
@@ -7,13 +7,13 @@
 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE
+# FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-__doc__='''Generic Database Adapter Package Registration
+"""Generic Database Adapter Package Registration.
 
-$Id$'''
-__version__='$Revision: 1.16 $'[11:-2]
+$Id$
+"""
 
 import Globals, os
 
@@ -34,12 +34,6 @@
              'date','time','datetime'):
     misc_[icon]=Globals.ImageFile('icons/%s.gif' % icon, globals())
 
-meta_types=(
-    {'name':'Z %s Database Connection' % database_type,
-     'action':'manage_addZ%sConnectionForm' % database_type,
-     },
-    )
-
 DA=None
 def getDA():
     global DA
@@ -70,20 +64,17 @@
     return getDA().manage_addZGadflyConnection(
         self, id, title, connection, check, REQUEST)
 
-methods={
-    'manage_addZGadflyConnection':
-    manage_addZGadflyConnection,
-    'manage_addZGadflyConnectionForm':
-    manage_addZGadflyConnectionForm,
-    }
+def initialize(context):
 
-__ac_permissions__=(
-    ('Add Z Gadfly Database Connections',
-     ('manage_addZGadflyConnectionForm',
-      'manage_addZGadflyConnection')),
+    context.registerClass(
+        DA.Connection,
+        permission='Add Z Gadfly Database Connections',
+        constructors=(manage_addZGadflyConnectionForm,
+                      manage_addZGadflyConnection),
+        legacy=(manage_addZGadflyConnectionForm,
+                manage_addZGadflyConnection),
     )
 
-
 # from App.config import getConfiguration
 # j=os.path.join
 # d=j(getConfiguration().clienthome,'gadfly')


Property changes on: Zope/trunk/lib/python/Products/ZGadflyDA/__init__.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.16

Modified: Zope/trunk/lib/python/Products/ZSQLMethods/__init__.py
===================================================================
--- Zope/trunk/lib/python/Products/ZSQLMethods/__init__.py	2005-10-31 10:35:06 UTC (rev 39762)
+++ Zope/trunk/lib/python/Products/ZSQLMethods/__init__.py	2005-10-31 10:35:24 UTC (rev 39763)
@@ -7,21 +7,19 @@
 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE
+# FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-__doc__='''SQL Method Product
+"""SQL Method Product.
 
+$Id$
+"""
 
-$Id$'''
-__version__='$Revision: 1.18 $'[11:-2]
 import Shared.DC.ZRDB.Search, Shared.DC.ZRDB.Aqueduct, SQL
 import Shared.DC.ZRDB.RDB
 import Shared.DC.ZRDB.sqlvar, Shared.DC.ZRDB.sqlgroup, Shared.DC.ZRDB.sqltest
 
 
-# This is the new way to initialize products.  It is hoped
-# that this more direct mechanism will be more understandable.
 def initialize(context):
 
     context.registerClass(
@@ -29,6 +27,9 @@
         permission='Add Database Methods',
         constructors=(SQL.manage_addZSQLMethodForm, SQL.manage_addZSQLMethod),
         icon='sqlmethod.gif',
+        # XXX: can this permission be removed?
+        permissions=('Open/Close Database Connections',),
+        legacy=(SQL.SQLConnectionIDs,)
         )
 
     context.registerClass(
@@ -36,25 +37,13 @@
         permission='Add Documents, Images, and Files',
         constructors=(Shared.DC.ZRDB.Search.addForm,
                       Shared.DC.ZRDB.Search.manage_addZSearch),
+        legacy=(Shared.DC.ZRDB.Search.ZQueryIds,)
         )
 
     context.registerHelp()
     context.registerHelpTitle('Zope Help')
 
-methods={
-    # We still need this one, at least for now, for both editing and
-    # adding.  Ugh.
-    'SQLConnectionIDs': SQL.SQLConnectionIDs,
 
-    # Oh please!
-    'ZQueryIds':             Shared.DC.ZRDB.Search.ZQueryIds,
-    }
-
-__ac_permissions__=(
-    # Ugh.  We should get rid of this, but we'll have to revisit connections
-    ('Open/Close Database Connections',   ()),
-    )
-
 __module_aliases__=(
     ('Products.AqueductSQLMethods','Products.ZSQLMethods'),
     ('Aqueduct', Shared.DC.ZRDB),


Property changes on: Zope/trunk/lib/python/Products/ZSQLMethods/__init__.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.18



More information about the Zope-Checkins mailing list