[Zope-Checkins] SVN: Zope/branches/Zope-2_8-branch/ - marked old-style product metadata support as deprecated

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


Log message for revision 39762:
  - marked old-style product metadata support as deprecated
  - removed all dependencies on that support

Changed:
  U   Zope/branches/Zope-2_8-branch/doc/CHANGES.txt
  U   Zope/branches/Zope-2_8-branch/lib/python/OFS/Application.py
  UU  Zope/branches/Zope-2_8-branch/lib/python/OFS/tests/testProductInit.py
  UU  Zope/branches/Zope-2_8-branch/lib/python/Products/ZGadflyDA/__init__.py
  UU  Zope/branches/Zope-2_8-branch/lib/python/Products/ZSQLMethods/__init__.py

-=-
Modified: Zope/branches/Zope-2_8-branch/doc/CHANGES.txt
===================================================================
--- Zope/branches/Zope-2_8-branch/doc/CHANGES.txt	2005-10-31 08:30:03 UTC (rev 39761)
+++ Zope/branches/Zope-2_8-branch/doc/CHANGES.txt	2005-10-31 10:35:06 UTC (rev 39762)
@@ -22,8 +22,15 @@
 
    - Collector #1233: port ZOPE_CONFIG patch from Zope 2.7 to Zope 2.8
 
-  
+  Zope 2.8.5 (unreleased)
 
+    Bugs Fixed
+
+      - OFS Application: While deprecated since years, old-style product
+        metadata in the __init__.py did not show deprecation warnings. Added
+        warnings and converted ZGadflyDA/__init__.py and
+        ZSQLMethods/__init__.py to use registerClass instead.
+
   Zope 2.8.4 (2005/10/26)
 
     Bugs Fixed

Modified: Zope/branches/Zope-2_8-branch/lib/python/OFS/Application.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/OFS/Application.py	2005-10-31 08:30:03 UTC (rev 39761)
+++ Zope/branches/Zope-2_8-branch/lib/python/OFS/Application.py	2005-10-31 10:35:06 UTC (rev 39762)
@@ -7,7 +7,7 @@
 # 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.
 #
 ##############################################################################
 """Application support
@@ -18,6 +18,7 @@
 import os, sys, traceback
 from cgi import escape
 from StringIO import StringIO
+from warnings import warn
 
 import Globals, Products, App.Product, App.ProductRegistry, misc_
 import transaction
@@ -401,7 +402,7 @@
             default_period_secs = 20
             default_timeout_mins = 20
 
-            limit = getattr(config, 'maximum_number_of_session_objects', 
+            limit = getattr(config, 'maximum_number_of_session_objects',
                             default_limit)
             timeout_spec = getattr(config, 'session_timeout_minutes',
                                    default_timeout_mins)
@@ -777,6 +778,13 @@
             # constructors, etc.
             permissions={}
             new_permissions={}
+            if pgetattr(product, '__ac_permissions__', None) is not None:
+                warn('__init__.py of %s has a long deprecated '
+                     '\'__ac_permissions__\' attribute. '
+                     '\'__ac_permissions__\' will be ignored by '
+                     'install_product in Zope 2.9. Please use registerClass '
+                     'instead.' % product.__name__,
+                     DeprecationWarning)
             for p in pgetattr(product, '__ac_permissions__', ()):
                 permission, names, default = (
                     tuple(p)+('Manager',))[:3]
@@ -786,6 +794,12 @@
                 elif not folder_permissions.has_key(permission):
                     new_permissions[permission]=()
 
+            if pgetattr(product, 'meta_types', None) is not None:
+                warn('__init__.py of %s has a long deprecated \'meta_types\' '
+                     'attribute. \'meta_types\' will be ignored by '
+                     'install_product in Zope 2.9. Please use registerClass '
+                     'instead.' % product.__name__,
+                     DeprecationWarning)
             for meta_type in pgetattr(product, 'meta_types', ()):
                 # Modern product initialization via a ProductContext
                 # adds 'product' and 'permission' keys to the meta_type
@@ -797,6 +811,12 @@
                 meta_type['visibility'] = 'Global'
                 meta_types.append(meta_type)
 
+            if pgetattr(product, 'methods', None) is not None:
+                warn('__init__.py of %s has a long deprecated \'methods\' '
+                     'attribute. \'methods\' will be ignored by '
+                     'install_product in Zope 2.9. Please use registerClass '
+                     'instead.' % product.__name__,
+                     DeprecationWarning)
             for name,method in pgetattr(
                 product, 'methods', {}).items():
                 if not hasattr(Folder.Folder, name):

Modified: Zope/branches/Zope-2_8-branch/lib/python/OFS/tests/testProductInit.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/OFS/tests/testProductInit.py	2005-10-31 08:30:03 UTC (rev 39761)
+++ Zope/branches/Zope-2_8-branch/lib/python/OFS/tests/testProductInit.py	2005-10-31 10:35:06 UTC (rev 39762)
@@ -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/branches/Zope-2_8-branch/lib/python/OFS/tests/testProductInit.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.3
Name: svn:keywords
   + Id

Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/ZGadflyDA/__init__.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/ZGadflyDA/__init__.py	2005-10-31 08:30:03 UTC (rev 39761)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/ZGadflyDA/__init__.py	2005-10-31 10:35:06 UTC (rev 39762)
@@ -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/branches/Zope-2_8-branch/lib/python/Products/ZGadflyDA/__init__.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.16

Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/ZSQLMethods/__init__.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/ZSQLMethods/__init__.py	2005-10-31 08:30:03 UTC (rev 39761)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/ZSQLMethods/__init__.py	2005-10-31 10:35:06 UTC (rev 39762)
@@ -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/branches/Zope-2_8-branch/lib/python/Products/ZSQLMethods/__init__.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.18



More information about the Zope-Checkins mailing list