Commit 26632704 authored by 's avatar

- marked old-style product metadata support as deprecated

- removed all dependencies on that support
parent 65060456
......@@ -22,7 +22,14 @@ Zope Changes
- 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)
......
......@@ -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 @@ $Id$
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
......@@ -777,6 +778,13 @@ def install_product(app, product_dir, product_name, meta_types,
# 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 @@ def install_product(app, product_dir, product_name, meta_types,
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 @@ def install_product(app, product_dir, product_name, meta_types,
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):
......
......@@ -44,16 +44,18 @@ products <<PRODUCTS2>>
# 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 @@ class TestProductInit( unittest.TestCase ):
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()
......
......@@ -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 @@ for icon in ('table', 'view', 'stable', 'what',
'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 @@ def manage_addZGadflyConnection(
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')
......
......@@ -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 @@ def initialize(context):
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,24 +37,12 @@ def initialize(context):
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'),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment