[Zope-Checkins] SVN: Zope/trunk/ ZClasses have been deprecated for two major releases. They have been removed in this version of Zope.

Hanno Schlichting plone at hannosch.info
Fri Jan 23 13:30:05 EST 2009


Log message for revision 94962:
  ZClasses have been deprecated for two major releases. They have been removed in this version of Zope.
  

Changed:
  U   Zope/trunk/doc/CHANGES.txt
  U   Zope/trunk/doc/HELPSYS.txt
  U   Zope/trunk/lib/python/AccessControl/PermissionMapping.py
  U   Zope/trunk/lib/python/AccessControl/Permissions.py
  U   Zope/trunk/lib/python/AccessControl/Role.py
  U   Zope/trunk/lib/python/AccessControl/dtml/methodAccess.dtml
  U   Zope/trunk/lib/python/AccessControl/tests/testPermissionRole.py
  U   Zope/trunk/lib/python/App/Common.py
  D   Zope/trunk/lib/python/App/Factory.py
  U   Zope/trunk/lib/python/App/Management.py
  U   Zope/trunk/lib/python/App/Product.py
  U   Zope/trunk/lib/python/App/ProductContext.py
  U   Zope/trunk/lib/python/App/ProductRegistry.py
  D   Zope/trunk/lib/python/App/dtml/addFactory.dtml
  D   Zope/trunk/lib/python/App/dtml/addProduct.dtml
  U   Zope/trunk/lib/python/App/dtml/manage_tabs.dtml
  U   Zope/trunk/lib/python/App/dtml/refresh.dtml
  U   Zope/trunk/lib/python/HelpSys/ObjectRef.py
  U   Zope/trunk/lib/python/OFS/Application.py
  U   Zope/trunk/lib/python/OFS/Cache.py
  U   Zope/trunk/lib/python/OFS/FindSupport.py
  U   Zope/trunk/lib/python/OFS/PropertySheets.py
  U   Zope/trunk/lib/python/OFS/dtml/cacheable.dtml
  U   Zope/trunk/lib/python/OFS/interfaces.py
  U   Zope/trunk/lib/python/OFS/misc_.py
  U   Zope/trunk/lib/python/OFS/tests/testAppInitializer.py
  U   Zope/trunk/lib/python/Products/BTreeFolder2/__init__.py
  U   Zope/trunk/lib/python/Products/Five/deprecated.zcml
  U   Zope/trunk/lib/python/Products/OFSP/__init__.py
  D   Zope/trunk/lib/python/Products/OFSP/help/Common-Instance-Property-Sheet.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/Common-Instance-Property-Sheet_Add.stx
  U   Zope/trunk/lib/python/Products/OFSP/help/Product.stx
  U   Zope/trunk/lib/python/Products/OFSP/help/PropertySheet.py
  U   Zope/trunk/lib/python/Products/OFSP/help/PropertySheets.py
  D   Zope/trunk/lib/python/Products/OFSP/help/Security_Define-Permissions.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/ZClass.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/ZClass_Add.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/ZClass_Basic.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/ZClass_Methods.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/ZClass_Permissions.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/ZClass_Property-Sheets.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/ZClass_Subobjects.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/ZClass_Views.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory_Add.stx
  D   Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory_Edit.stx
  U   Zope/trunk/lib/python/Products/OFSP/help/Zope-Permission.stx
  U   Zope/trunk/lib/python/Products/TemporaryFolder/mount.py
  U   Zope/trunk/lib/python/Products/ZCatalog/CatalogAwareness.py
  U   Zope/trunk/lib/python/Products/ZCatalog/CatalogPathAwareness.py
  U   Zope/trunk/lib/python/Products/ZCatalog/ZCatalog.txt
  U   Zope/trunk/lib/python/Products/ZCatalog/__init__.py
  U   Zope/trunk/lib/python/Shared/DC/Scripts/dtml/scriptBindings.dtml
  U   Zope/trunk/lib/python/Shared/DC/ZRDB/DA.py
  U   Zope/trunk/lib/python/Shared/DC/ZRDB/dtml/advanced.dtml
  U   Zope/trunk/lib/python/Testing/ZopeTestCase/doc/API.stx
  U   Zope/trunk/lib/python/Testing/ZopeTestCase/doc/HOWTO.stx
  U   Zope/trunk/lib/python/Testing/ZopeTestCase/utils.py
  U   Zope/trunk/lib/python/ZPublisher/HTTPRequest.py
  U   Zope/trunk/lib/python/Zope2/App/ClassFactory.py
  U   Zope/trunk/lib/python/Zope2/Startup/datatypes.py
  U   Zope/trunk/lib/python/Zope2/Startup/zopeschema.xml

-=-
Modified: Zope/trunk/doc/CHANGES.txt
===================================================================
--- Zope/trunk/doc/CHANGES.txt	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/doc/CHANGES.txt	2009-01-23 18:30:05 UTC (rev 94962)
@@ -9,6 +9,9 @@
 
     Restructuring
 
+      - ZClasses have been deprecated for two major releases. They have been
+        removed in this version of Zope.
+
       - Avoid deprecation warnings for the md5 and sha modules in Python 2.6
         by adding conditional imports for the hashlib module.
 

Modified: Zope/trunk/doc/HELPSYS.txt
===================================================================
--- Zope/trunk/doc/HELPSYS.txt	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/doc/HELPSYS.txt	2009-01-23 18:30:05 UTC (rev 94962)
@@ -2,7 +2,7 @@
 
   The Zope Help System provides context-sensitive on-line help for
   Zope users. The system is flexible and can provide help for
-  Python and ZClass-based Zope Products.
+  Python Zope Products.
   
   In the future the Help System will be expanded to provide additional
   help including API documentation.
@@ -30,23 +30,7 @@
   In general you get access to the Help System through the help system
   object which has methods for drawing help buttons. This object lives
   in the Zope application object and has an id of 'HelpSys'.
-  
-Writing Help for ZClasses
 
-  Suppose you've created an addable type of object with ZClasses.
-  You'd like the management screens of your objects to have help
-  buttons just like the standard Zope management screens.
-  
-  First create some Help Topics though the web which document your
-  management screens. Do this by going to your ZClass's Product and
-  creating new Help Topics inside the Product Help object.
-  
-  Next go to your ZClass and click on the 'Views' management tab. On
-  this screen you define your object's management views. Each view has
-  a name, a method, and optionally a help topic. If you select a help
-  topic for a view, a help button will be drawn on that management
-  view and it will be linked to the help topic you select.
-  
 Writing Help for Python Products
 
   To support help your Python product needs to register help topics

Modified: Zope/trunk/lib/python/AccessControl/PermissionMapping.py
===================================================================
--- Zope/trunk/lib/python/AccessControl/PermissionMapping.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/AccessControl/PermissionMapping.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -91,25 +91,6 @@
                 REQUEST,
                 manage_tabs_message='The permission mapping has been updated')
 
-    def _isBeingUsedAsAMethod(self, REQUEST =None, wannaBe=0):
-        try:
-            if hasattr(self, 'aq_self'):
-                r=self.aq_acquire('_isBeingUsedAsAMethod_')
-            else:
-                r=self._isBeingUsedAsAMethod_
-        except: r=0
-
-        if REQUEST is not None:
-            if not r != (not wannaBe): REQUEST.response.notFoundError()
-
-        return r
-
-    def _isBeingAccessedAsZClassDefinedInstanceMethod(self):
-        p=getattr(self,'__parent__',None)
-        if p is None: return 0          # Not wrapped
-        base=getattr(p, 'aq_base', None)
-        return type(base) is PermissionMapper
-
 InitializeClass(RoleManager)
 
 

Modified: Zope/trunk/lib/python/AccessControl/Permissions.py
===================================================================
--- Zope/trunk/lib/python/AccessControl/Permissions.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/AccessControl/Permissions.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -49,7 +49,6 @@
 import_export_objects='Import/Export objects'
 join_leave_versions='Join/leave Versions'
 manage_vocabulary='Manage Vocabulary'
-manage_zclasses='Manage Z Classes'
 manage_zcatalog_entries='Manage ZCatalog Entries'
 manage_zcatalog_indexes='Manage ZCatalogIndex Entries'
 manage_properties='Manage properties'

Modified: Zope/trunk/lib/python/AccessControl/Role.py
===================================================================
--- Zope/trunk/lib/python/AccessControl/Role.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/AccessControl/Role.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -17,9 +17,7 @@
 from cgi import escape
 
 from Acquisition import Acquired
-from Acquisition import aq_get
 from Acquisition import aq_base
-from Acquisition import Implicit
 from AccessControl import ClassSecurityInfo
 from AccessControl.SecurityManagement import newSecurityManager
 from AccessControl.Permissions import change_permissions
@@ -36,13 +34,7 @@
 
 DEFAULTMAXLISTUSERS=250
 
-def _isBeingUsedAsAMethod(self):
-    return aq_get(self, '_isBeingUsedAsAMethod_', 0)
 
-def _isNotBeingUsedAsAMethod(self):
-    return not aq_get(self, '_isBeingUsedAsAMethod_', 0)
-
-
 class RoleManager(Base, RoleManager):
 
     """An object that has configurable permissions"""
@@ -54,12 +46,7 @@
     manage_options=(
         {'label':'Security', 'action':'manage_access',
          'help':('OFSP','Security.stx'),
-         'filter': _isNotBeingUsedAsAMethod,
          },
-        {'label':'Define Permissions', 'action':'manage_access',
-         'help':('OFSP','Security_Define-Permissions.stx'),
-         'filter': _isBeingUsedAsAMethod,
-         },
         )
 
     __ac_roles__=('Manager', 'Owner', 'Anonymous', 'Authenticated')
@@ -137,7 +124,6 @@
     def manage_role(self, role_to_manage, permissions=[], REQUEST=None):
         """Change the permissions given to the given role.
         """
-        self._isBeingUsedAsAMethod(REQUEST, 0)
         for p in self.ac_inherited_permissions(1):
             name, value = p[:2]
             p=Permission(name,value,self)
@@ -156,7 +142,6 @@
     def manage_acquiredPermissions(self, permissions=[], REQUEST=None):
         """Change the permissions that acquire.
         """
-        self._isBeingUsedAsAMethod(REQUEST, 0)
         for p in self.ac_inherited_permissions(1):
             name, value = p[:2]
             p=Permission(name,value,self)
@@ -243,7 +228,6 @@
         are acquired, in addition to the ones specified, otherwise the
         permissions are restricted to only the designated roles.
         """
-        self._isBeingUsedAsAMethod(REQUEST, 0)
         for p in self.ac_inherited_permissions(1):
             name, value = p[:2]
             if name==permission_to_manage:
@@ -259,26 +243,19 @@
                 escape(permission_to_manage))
 
     _normal_manage_access=DTMLFile('dtml/access', globals())
-
-    _method_manage_access=DTMLFile('dtml/methodAccess', globals())
     manage_reportUserPermissions=DTMLFile('dtml/reportUserPermissions', globals())
 
     security.declareProtected(change_permissions, 'manage_access')
     def manage_access(self, REQUEST, **kw):
         """Return an interface for making permissions settings.
         """
-        if hasattr(self, '_isBeingUsedAsAMethod') and \
-           self._isBeingUsedAsAMethod():
-            return apply(self._method_manage_access,(), kw)
-        else:
-            return apply(self._normal_manage_access,(), kw)
+        return apply(self._normal_manage_access,(), kw)
 
     security.declareProtected(change_permissions, 'manage_changePermissions')
     @requestmethod('POST')
     def manage_changePermissions(self, REQUEST):
         """Change all permissions settings, called by management screen.
         """
-        self._isBeingUsedAsAMethod(REQUEST, 0)
         valid_roles=self.valid_roles()
         indexes=range(len(valid_roles))
         have=REQUEST.has_key

Modified: Zope/trunk/lib/python/AccessControl/dtml/methodAccess.dtml
===================================================================
--- Zope/trunk/lib/python/AccessControl/dtml/methodAccess.dtml	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/AccessControl/dtml/methodAccess.dtml	2009-01-23 18:30:05 UTC (rev 94962)
@@ -6,14 +6,12 @@
 
 <p class="form-help">
 This interface is used to define how the operations of this object 
-correspond to the operations defined by your product or ZClass.
+correspond to the operations defined by your product.
 </p>
 
 <p class="form-help">
-The first column below lists the permissions for this object.  The second 
-specifies the permissions that should have this permission in this product 
-or ZClass. For ZClass methods, only permissions that are defined for the 
-ZClass are permitted.
+The first column below lists the permissions for this object. The second
+specifies the permissions that should have this permission in this product.
 </p>
 
 <p class="form-help">

Modified: Zope/trunk/lib/python/AccessControl/tests/testPermissionRole.py
===================================================================
--- Zope/trunk/lib/python/AccessControl/tests/testPermissionRole.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/AccessControl/tests/testPermissionRole.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -44,14 +44,7 @@
 class PermissiveObject(Explicit):
     _Edit_Things__Permission = ['Anonymous']
 
-class ZClassMethodish(Implicit):
-    # Think of this as a method that should only be visible to users
-    # who have the edit permission.
-    _View_Permission = '_Edit_Things__Permission'
-    _Edit_Things__Permission = ''
-    _Delete_Permission = ''
 
-
 def assertPRoles(ob, permission, expect):
     """
     Asserts that in the context of ob, the given permission maps to
@@ -118,15 +111,6 @@
         assertPRoles(o, EditThingsPermission, ('Manager','Owner',))
         assertPRoles(o, DeletePermission,     ('Manager',))
 
-    def testPermissionMapping(self):
-        app = AppRoot()
-        app.c = ImplicitContainer()
-        app.c.o = ZClassMethodish()
-        o = app.c.o
-        assertPRoles(o, ViewPermission,       ('Manager','Owner',))
-        assertPRoles(o, EditThingsPermission, ())
-        assertPRoles(o, DeletePermission,     ())
-
     def testPermissionRoleSupportsGetattr(self):
         a = PermissionRole('a')
         self.failUnless(getattr(a, '__roles__') == ('Manager',))

Modified: Zope/trunk/lib/python/App/Common.py
===================================================================
--- Zope/trunk/lib/python/App/Common.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/App/Common.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -103,12 +103,6 @@
         except KeyError:
             pass
 
-    if hasattr(parent,'_objects'):
-        # XXX This is really icky
-        # This ugly mess is for ZClass methods I think
-        if absId+' ' in parent.objectIds():
-            return 0
-
     if hasattr(aq_base(ob), 'isTopLevelPrincipiaApplicationObject') and \
             ob.isTopLevelPrincipiaApplicationObject:
         # This object the top level

Deleted: Zope/trunk/lib/python/App/Factory.py
===================================================================
--- Zope/trunk/lib/python/App/Factory.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/App/Factory.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,132 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2002 Zope Corporation and Contributors. All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
-# 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
-#
-##############################################################################
-__doc__='''Factory objects
-
-$Id$'''
-__version__='$Revision: 1.27 $'[11:-2]
-
-from AccessControl.Permissions import edit_factories
-from AccessControl.Permissions import use_factories
-from AccessControl.Role import RoleManager
-from AccessControl.SecurityInfo import ClassSecurityInfo
-from Acquisition import Acquired
-from Acquisition import Implicit
-from App.class_init import InitializeClass
-from App.special_dtml import DTMLFile
-from Persistence import Persistent
-from OFS.SimpleItem import Item
-
-class Factory(RoleManager,
-              Persistent,
-              Implicit,
-              Item
-             ):
-    """Model factory meta-data
-    """
-    meta_type = 'Zope Factory'
-    icon = 'p_/Factory_icon'
-
-    security = ClassSecurityInfo()
-    security.declareObjectProtected(use_factories)
-
-    permission = '' # Waaaa
-
-    _setObject=_getOb = Acquired
-
-    manage_options = (
-        (
-        {'label':'Edit', 'action':'manage_main',
-         'help':('OFSP','Zope-Factory_Edit.stx')},
-        )
-        + RoleManager.manage_options
-        + Item.manage_options
-        )
-
-    def __init__(self, id, title, object_type, initial, permission=''):
-        self.id=id
-        self.title=title
-        self.object_type=object_type
-        self.initial=initial
-        self.permission=permission
-
-    security.declarePrivate('initializePermission')
-    def initializePermission(self):
-        self.manage_setPermissionMapping((use_factories,),
-                                         (self.permission,))
-
-    security.declareProtected(edit_factories, 'manage_edit')
-    def manage_edit(self, title, object_type, initial, permission='',
-                    REQUEST=None):
-        "Modify factory properties."
-        self._unregister()
-        self.title = title
-        self.object_type = object_type
-        self.initial = initial
-        self.permission = permission
-        self.manage_setPermissionMapping((use_factories,), (permission,))
-        self._register()
-        if REQUEST is not None:
-            return self.manage_main(self, REQUEST)
-
-    def manage_afterAdd(self, item, container):
-        from App.Product import Product  # local to avoid circular import
-        if hasattr(self, 'aq_parent'):
-            container=self.aq_parent
-        elif item is not self:
-            container=None
-        if (item is self or
-            getattr(container, '__class__', None) is Product):
-            self._register()
-
-    def manage_beforeDelete(self, item, container):
-        from App.Product import Product  # local to avoid circular import
-        if hasattr(self, 'aq_parent'):
-            container=self.aq_parent
-        elif item is not self:
-            container=None
-
-        if (item is self or
-            getattr(container, '__class__', None) is Product):
-            self._unregister()
-
-    def _register(self):
-        # Register with the product folder
-        product  =self.aq_parent
-        product.aq_acquire('_manage_add_product_meta_type')(
-            product, self.id, self.object_type, self.permission)
-
-    def _unregister(self):
-        # Unregister with the product folder
-        product = self.aq_parent
-        product.aq_acquire('_manage_remove_product_meta_type')(
-            product, self.id, self.object_type)
-
-    security.declareProtected(edit_factories, 'manage_main')
-    manage_main = DTMLFile('dtml/editFactory',globals())
-
-    security.declareProtected(use_factories, 'index_html')
-    def index_html(self, REQUEST):
-        """ Main factory view
-        """
-        return getattr(self, self.initial)(self.aq_parent, REQUEST)
-
-    def objectIds(self):
-        return filter(
-            lambda id, myid=self.id: id != myid,
-            self.aq_parent.objectIds()
-            )
-
-InitializeClass(Factory)
-
-
-class ProductFactory(Factory): pass

Modified: Zope/trunk/lib/python/App/Management.py
===================================================================
--- Zope/trunk/lib/python/App/Management.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/App/Management.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -139,25 +139,6 @@
         out.append(last)
         return '/'.join(out)
 
-    security.declarePublic('class_manage_path')
-    def class_manage_path(self):
-        if self.__class__.__module__[:1] != '*':
-            return
-        path = getattr(self.__class__, '_v_manage_path_roles', None)
-        if path is None:
-            meta_type = self.meta_type
-            for zclass in self.getPhysicalRoot()._getProductRegistryData(
-                'zclasses'):
-                if zclass['meta_type'] == meta_type:
-                    break
-            else:
-                self.__class__._v_manage_path_roles = ''
-                return
-            path = self.__class__._v_manage_path_roles = (
-                '%(product)s/%(id)s' % zclass)
-        if path:
-            return '/Control_Panel/Products/%s/manage_workspace' % path
-
 InitializeClass(Tabs)
 
 

Modified: Zope/trunk/lib/python/App/Product.py
===================================================================
--- Zope/trunk/lib/python/App/Product.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/App/Product.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -34,38 +34,22 @@
 #   on restart if there is still a product directory.
 
 
-from cgi import escape
 import cPickle
-import marshal
 import os
 import re
-from urllib import quote
 import zlib
 
 import transaction
 
 from AccessControl.Owned import UnownableOwner
-from AccessControl.Permissions import manage_zclasses
 from AccessControl.SecurityInfo import ClassSecurityInfo
 from AccessControl.unauthorized import Unauthorized
 from App.class_init import InitializeClass
 from App.special_dtml import DTMLFile
 from OFS.Folder import Folder
 
-from App.Factory import Factory
 from App.Permission import PermissionManager
 
-# BBB: ZClasses are deprecated but we don't want the warning to appear here
-import warnings
-warnings.filterwarnings('ignore', message='^ZClasses', append=1)
-try:
-    import ZClasses
-finally:
-    del warnings.filters[-1]
-    try:
-        del __warningregistry__
-    except NameError:
-        pass
 
 class ProductFolder(Folder):
     "Manage a collection of Products"
@@ -75,25 +59,12 @@
     meta_type = 'Product Management'
     icon = 'p_/ProductFolder_icon'
 
-    all_meta_types={'name': 'Product', 'action': 'manage_addProductForm',
-                    'permission': manage_zclasses},
-    meta_types = all_meta_types
-
     # This prevents subobjects from being owned!
     _owner = UnownableOwner
 
     def _product(self, name):
         return getattr(self, name)
 
-    manage_addProductForm = DTMLFile('dtml/addProduct', globals())
-    def manage_addProduct(self, id, title, REQUEST=None):
-        """ Create a product.
-        """
-        i=Product(id, title)
-        self._setObject(id,i)
-        if REQUEST is not None:
-            return self.manage_main(self,REQUEST,update_menu=1)
-
     def _canCopy(self, op=0):
         return 0
 
@@ -111,7 +82,6 @@
     version=''
     configurable_objects_=()
     import_error_=None
-    _isBeingUsedAsAMethod_=1
 
     def new_version(self,
                     _intending=re.compile(r"[0-9]+").search, #TS
@@ -135,21 +105,9 @@
 
 
     meta_types=(
-        ZClasses.meta_types +
-        PermissionManager.meta_types +
-        (
-            {
-                'name': Factory.meta_type,
-                'action': 'manage_addPrincipiaFactoryForm'
-                },
-            )
+        PermissionManager.meta_types
         )
 
-    manage_addZClassForm=ZClasses.methods['manage_addZClassForm']
-    manage_addZClass    =ZClasses.methods['manage_addZClass']
-    manage_subclassableClassNames=ZClasses.methods[
-        'manage_subclassableClassNames']
-
     manage_options = (
         (Folder.manage_options[0],) +
         tuple(Folder.manage_options[2:]) 
@@ -161,18 +119,6 @@
 
     _reserved_names=('Help',)
 
-    manage_addPrincipiaFactoryForm = DTMLFile('dtml/addFactory', globals())
-    def manage_addPrincipiaFactory(
-        self, id, title, object_type, initial, permission=None, REQUEST=None):
-        """ Add a ZClass factory
-        """
-        i = Factory(id, title, object_type, initial, permission)
-        self._setObject(id,i)
-        factory = self._getOb(id)
-        factory.initializePermission()
-        if REQUEST is not None:
-            return self.manage_main(self,REQUEST,update_menu=1)
-
     def __init__(self, id, title):
         self.id=id
         self.title=title
@@ -200,9 +146,6 @@
     def permissionMappingPossibleValues(self):
         return self.possible_permissions()
 
-    def zclass_product_name(self):
-        return self.id
-
     def getProductHelp(self):
         """Returns the ProductHelp object associated with the Product.
         """
@@ -239,63 +182,6 @@
                     pass
         return refresh_txt
 
-    def manage_refresh(self, REQUEST, manage_tabs_message=None):
-        """Displays the refresh management screen.
-        """
-        import Globals  # for data
-        from App.RefreshFuncs import getLastRefreshException
-        from App.RefreshFuncs import isAutoRefreshEnabled
-        from App.RefreshFuncs import getDependentProducts
-        from App.RefreshFuncs import listRefreshableModules
-        from App.RefreshFuncs import listAutoRefreshableModules
-        error_type = error_value = error_tb = None
-        exc = getLastRefreshException(self.id)
-        if exc is not None:
-            error_type, error_value, error_tb = exc
-            exc = None
-
-        refresh_txt = self._readRefreshTxt()
-
-        # Read the persistent refresh information.
-        auto = isAutoRefreshEnabled(self._p_jar, self.id)
-        deps = getDependentProducts(self._p_jar, self.id)
-
-        # List all product modules.
-        mods = listRefreshableModules(self.id)
-        loaded_modules = []
-        prefix = 'Products.%s' % self.id
-        prefixdot = prefix + '.'
-        lpdot = len(prefixdot)
-        for name, module in mods:
-            if name == prefix or name[:lpdot] == prefixdot:
-                name = name[lpdot:]
-                if not name:
-                    name = '__init__'
-            loaded_modules.append(name)
-
-        all_auto = listAutoRefreshableProducts(self._p_jar)
-        for pid in all_auto:
-            # Ignore products that don't have a refresh.txt.
-            if self._readRefreshTxt(pid) is None:
-                all_auto.remove(pid)
-        auto_other = filter(lambda productId, myId=self.id:
-                            productId != myId, all_auto)
-
-        # Return rendered DTML.
-        return self._refresh_dtml(REQUEST,
-                                  id=self.id,
-                                  refresh_txt=refresh_txt,
-                                  error_type=error_type,
-                                  error_value=error_value,
-                                  error_tb=error_tb,
-                                  devel_mode=Globals.DevelopmentMode,
-                                  auto_refresh_enabled=auto,
-                                  auto_refresh_other=auto_other,
-                                  dependent_products=deps,
-                                  loaded_modules=loaded_modules,
-                                  manage_tabs_message=manage_tabs_message,
-                                  management_view='Refresh')
-
     def manage_performRefresh(self, REQUEST=None):
         """ Attempts to perform a refresh operation.
         """
@@ -484,8 +370,6 @@
         transaction.abort()
         return product
 
-    # Give the ZClass fixup code in Application
-    Globals.__disk_product_installed__ = 1
     return product
 
 def ihasattr(o, name):

Modified: Zope/trunk/lib/python/App/ProductContext.py
===================================================================
--- Zope/trunk/lib/python/App/ProductContext.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/App/ProductContext.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -28,7 +28,6 @@
 from DateTime.DateTime import DateTime
 from HelpSys import APIHelpTopic
 from HelpSys import HelpTopic
-from HelpSys.HelpSys import ProductHelp
 from OFS.misc_ import Misc_
 from OFS.misc_ import misc_
 from OFS.ObjectManager import ObjectManager
@@ -36,7 +35,6 @@
 from zope.interface import implementedBy
 
 from App.FactoryDispatcher import FactoryDispatcher
-import ZClasses # to enable 'PC.registerBaseClass()'
 
 # Waaaa
 import Products
@@ -229,41 +227,6 @@
                 setattr(misc_, pid, Misc_(pid, {}))
             getattr(misc_, pid)[name]=icon
 
-    def registerZClass(self, Z, meta_type=None):
-        #
-        #   Convenience method, now deprecated -- clients should
-        #   call 'ZClasses.createZClassForBase()' themselves at
-        #   module import time, passing 'globals()', so that the
-        #   ZClass will be available immediately.
-        #
-        base_class=Z._zclass_
-        if meta_type is None:
-            if hasattr(base_class, 'meta_type'): meta_type=base_class.meta_type
-            else:                                meta_type=base_class.__name__
-
-        module=base_class.__module__
-        name=base_class.__name__
-
-        key="%s/%s" % (module, name)
-
-        if module[:9]=='Products.': module=module.split('.')[1]
-        else: module=module.split('.')[0]
-
-        info="%s: %s" % (module, name)
-
-        Products.meta_class_info[key]=info # meta_type
-        Products.meta_classes[key]=Z
-
-    def registerBaseClass(self, base_class, meta_type=None):
-        #
-        #   Convenience method, now deprecated -- clients should
-        #   call 'ZClasses.createZClassForBase()' themselves at
-        #   module import time, passing 'globals()', so that the
-        #   ZClass will be available immediately.
-        #
-        Z = ZClasses.createZClassForBase( base_class, self.__pack )
-        return Z
-
     def getProductHelp(self):
         """
         Returns the ProductHelp associated with the current Product.

Modified: Zope/trunk/lib/python/App/ProductRegistry.py
===================================================================
--- Zope/trunk/lib/python/App/ProductRegistry.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/App/ProductRegistry.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -136,10 +136,7 @@
     def _manage_remove_product_data(self, type, product, id):
         values=filter(
             lambda d, product=product, id=id:
-            not (d['product'] in
-                 (product,
-                  'methods' # hack to get around inner ZClass reg. bug
-                  ) and d['id']==id),
+            not (d['product']==product and d['id']==id),
             self.aq_maybe('_getProductRegistryData')(type)
             )
 
@@ -160,9 +157,6 @@
     _product_permissions=()
     _product_ac_permissions=()
 
-    _product_zclasses=() # product, id, meta_type, class
-
-
     def _getProductRegistryMetaTypes(self): return self._product_meta_types
     def _setProductRegistryMetaTypes(self, v): self._product_meta_types=v
 

Deleted: Zope/trunk/lib/python/App/dtml/addFactory.dtml
===================================================================
--- Zope/trunk/lib/python/App/dtml/addFactory.dtml	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/App/dtml/addFactory.dtml	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,92 +0,0 @@
-<dtml-var manage_page_header>
-
-<dtml-var "manage_form_title(this(), _,
-           form_title='Add Object Factory',
-           help_product='OFSP',
-           help_topic='Zope-Factory_Add.stx'
-	   )">
-
-<p class="form-help">
-A Factory allows you to place entries in the Zope Product add list. In the 
-form below the <em>add list name</em> is the name under which your entry will 
-appear in the Zope Product add list. The <em>method</em> is the method that 
-will be invoked when a user adds a new object.  This must be one of the 
-objects in the product, typically a Python Script or DTML object.
-</p>
-
-<dtml-if objectIds>
-<form action="manage_addPrincipiaFactory" method="post">
-<table cellspacing="0" cellpadding="2" border="0">
-  <tr>
-    <td align="left" valign="top">
-    <div class="form-label">
-    Id
-    </div>
-    </td>
-    <td align="left" valign="top">
-    <input type="text" name="id" size="40" />
-    </td>
-  </tr>
-
-  <tr>
-    <td align="left" valign="top">
-    <div class="form-optional">
-    Title
-    </div>
-    </td>
-    <td align="left" valign="top">
-    <input type="text" name="title" size="40" />
-    </td>
-  </tr>
-
-  <tr>
-    <td align="left" valign="top">
-    <div class="form-label">
-    Add list name
-    </div>
-    </td>
-    <td align="left" valign="top">
-    <input type="text" name="object_type" size="40" />
-    </td>
-  </tr>
-  
-  <tr>
-    <td align="left" valign="top">
-    <div class="form-label">
-    Method
-    </div>
-    </td>
-    <td align="left" valign="top">
-    <div class="form-element">
-    <select name="initial">
-<dtml-in objectItems>
-<dtml-if "meta_type != 'Principia Factory'">
-    <option>&dtml-sequence-key;</option>
-</dtml-if>
-</dtml-in>
-     </select>
-  </div>
-  </td>
-  </tr>
-
-  <tr>
-  <td></td>
-  <td align="left" valign="top">
-  <div class="form-element">
-  <br />
-  <input type="submit" name="submit" value="Generate" />
-  </div>
-  </td>
-  </tr>
-</table>
-</form>
-      
-<dtml-else>
-<p class="form-help">
-Before you can define a factory, you have to define one or more "methods", 
-such as Document or other objects that do the factory's work.
-</p>
-</dtml-if>
-
-<dtml-var manage_page_footer>
-

Deleted: Zope/trunk/lib/python/App/dtml/addProduct.dtml
===================================================================
--- Zope/trunk/lib/python/App/dtml/addProduct.dtml	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/App/dtml/addProduct.dtml	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,51 +0,0 @@
-<dtml-var manage_page_header>
-
-<dtml-var "manage_form_title(this(), _,
-           form_title='Add Product',
-           help_product='OFSP',
-           help_topic='Product_Add.stx'
-	   )">
-
-<p class="form-help">
-Products allows you to define new types of Zope objects. A Product contains 
-other objects including a Factory which allows you to make your Product 
-objects available via the Product add list.
-</p>
-
-<form action="manage_addProduct" method="POST">
-<table cellspacing="0" cellpadding="2" border="0">
-  <tr>
-    <td align="left" valign="top">
-    <div class="form-label">
-    Id
-    </div>
-    </td>
-    <td align="left" valign="top">
-    <input type="text" name="id" size="40" />
-    </td>
-  </tr>
-
-  <tr>
-    <td align="left" valign="top">
-    <div class="form-optional">
-    Title
-    </div>
-    </td>
-    <td align="left" valign="top">
-    <input type="text" name="title" size="40" />
-    </td>
-  </tr>
-
-  <tr>
-    <td></td>
-    <td align="left" valign="top">
-    <div class="form-element">
-    <br />
-    <input type="submit" name="submit" value="Generate" />
-    </div>
-    </td>
-  </tr>
-</table>
-</form>
-
-<dtml-var manage_page_footer>

Modified: Zope/trunk/lib/python/App/dtml/manage_tabs.dtml
===================================================================
--- Zope/trunk/lib/python/App/dtml/manage_tabs.dtml	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/App/dtml/manage_tabs.dtml	2009-01-23 18:30:05 UTC (rev 94962)
@@ -113,12 +113,7 @@
     </dtml-if>
     <strong>
     <dtml-if meta_type>
-      <dtml-if class_manage_path>
-    <a href="&dtml-BASEPATH1;&dtml-class_manage_path;"
-       title="Manage the ZClass of this object">&dtml-meta_type;</a>
-      <dtml-else>
-    &dtml-meta_type;
-      </dtml-if>
+      &dtml-meta_type;
     <dtml-else>
     Object
     </dtml-if> 

Modified: Zope/trunk/lib/python/App/dtml/refresh.dtml
===================================================================
--- Zope/trunk/lib/python/App/dtml/refresh.dtml	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/App/dtml/refresh.dtml	2009-01-23 18:30:05 UTC (rev 94962)
@@ -86,8 +86,6 @@
          'checked' or ' '">
         <input type="checkbox" name="selections:list"
          value="&dtml-sequence-item;" &dtml-checked; />
-        <a href="../&dtml-sequence-item;/manage_refresh"
-         >&dtml-sequence-item;</a><br />
        </dtml-let>
       </dtml-in>
       <input type="submit" name="manage_selectDependentProducts:method"

Modified: Zope/trunk/lib/python/HelpSys/ObjectRef.py
===================================================================
--- Zope/trunk/lib/python/HelpSys/ObjectRef.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/HelpSys/ObjectRef.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -124,11 +124,9 @@
             if is_class(v) and hasattr(v, 'meta_type') and \
                hasattr(v, '__ac_permissions__'):
                 if callable(v.meta_type):
-                    try: meta_type=v.meta_type()
-                    except:
-                        # Ack. probably a ZClass :(
-                        meta_type=None
-                else: meta_type=v.meta_type
+                    meta_type=v.meta_type()
+                else:
+                    meta_type=v.meta_type
                 if (meta_type is not None) and (meta_type not in hidden):
                     dict[meta_type]=ObjectItem(k, v)
             if is_module(v) and hasattr(v, '__path__'):

Modified: Zope/trunk/lib/python/OFS/Application.py
===================================================================
--- Zope/trunk/lib/python/OFS/Application.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/OFS/Application.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -66,7 +66,6 @@
     __defined_roles__ = ('Manager','Anonymous','Owner')
     web__form__method = 'GET'
     isTopLevelPrincipiaApplicationObject = 1
-    _isBeingUsedAsAMethod_ = 0
 
     # Create the help system object
     HelpSys = HelpSys('HelpSys')
@@ -213,77 +212,6 @@
         # We're at the base of the path.
         return ('',)
 
-    security.declarePrivate('fixupZClassDependencies')
-    def fixupZClassDependencies(self, rebuild=0):
-        # Note that callers should not catch exceptions from this method
-        # to ensure that the transaction gets aborted if the registry
-        # cannot be rebuilt for some reason. Returns true if any ZClasses
-        # were registered as a result of the call or the registry was
-        # rebuilt.
-        jar=self._p_jar
-        result=0
-
-        if rebuild:
-            from BTrees.OOBTree import OOBTree
-            jar.root()['ZGlobals'] = OOBTree()
-            result = 1
-
-        zglobals =jar.root()['ZGlobals']
-        reg_has_key=zglobals.has_key
-
-        products=self.Control_Panel.Products
-        for product in products.objectValues():
-            items=list(product.objectItems())
-            finished_dict={}
-            finished = finished_dict.has_key
-            while items:
-                name, ob = items.pop()
-                base=aq_base(ob)
-                if finished(id(base)):
-                    continue
-                finished_dict[id(base)] = None
-                try:
-                    # Try to re-register ZClasses if they need it.
-                    if hasattr(base,'_register') and hasattr(base,'_zclass_'):
-                        class_id=getattr(base._zclass_, '__module__', None)
-                        if class_id and not reg_has_key(class_id):
-                            ob._register()
-                            result=1
-                            if not rebuild:
-                                LOG.info('Registered ZClass: %s' % ob.id)
-                    # Include subobjects.
-                    if hasattr(base, 'objectItems'):
-                        m = list(ob.objectItems())
-                        items.extend(m)
-                    # Try to find ZClasses-in-ZClasses.
-                    if hasattr(base, 'propertysheets'):
-                        ps = ob.propertysheets
-                        if (hasattr(ps, 'methods') and
-                            hasattr(ps.methods, 'objectItems')):
-                            m = list(ps.methods.objectItems())
-                            items.extend(m)
-                except:
-                    LOG.warn('Broken objects exist in product %s.' % product.id,
-                             exc_info=sys.exc_info())
-
-        return result
-
-    security.declarePrivate('checkGlobalRegistry')
-    def checkGlobalRegistry(self):
-        """Check the global (zclass) registry for problems, which can
-        be caused by things like disk-based products being deleted.
-        Return true if a problem is found"""
-        try:
-            keys=list(self._p_jar.root()['ZGlobals'].keys())
-        except:
-            LOG.error(
-                'A problem was found when checking the global product '\
-                'registry.  This is probably due to a Product being '\
-                'uninstalled or renamed.  The traceback follows.',
-                exc_info=sys.exc_info())
-            return 1
-        return 0
-
     security.declarePrivate('_setInitializerFlag')
     def _setInitializerFlag(self, flag):
         if self._initializer_registry is None:
@@ -346,13 +274,11 @@
         self.install_session_data_manager()
         self.install_browser_id_manager()
         self.install_required_roles()
-        self.install_zglobals()
         self.install_inituser()
         self.install_errorlog()
         self.install_products()
         self.install_standards()
         self.install_virtual_hosting()
-        self.check_zglobals()
 
     def install_cp_and_products(self):
         app = self.getApp()
@@ -507,16 +433,6 @@
                 app.__ac_roles__=app.__ac_roles__ + ('Authenticated',)
                 self.commit('Added Authenticated role')
 
-    def install_zglobals(self):
-        app = self.getApp()
-
-        # Make sure we have ZGlobals
-        root=app._p_jar.root()
-        if not root.has_key('ZGlobals'):
-            from BTrees.OOBTree import OOBTree
-            root['ZGlobals'] = OOBTree()
-            self.commit('Added ZGlobals')
-
     def install_inituser(self):
         app = self.getApp()
 
@@ -559,61 +475,6 @@
             app._setInitializerFlag('virtual_hosting')
             self.commit('Added virtual_hosting')
 
-    def check_zglobals(self):
-        import Globals
-        if not doInstall():
-            return
-
-        app = self.getApp()
-
-        # Check for dangling pointers (broken zclass dependencies) in the
-        # global class registry. If found, rebuild the registry. Note that
-        # if the check finds problems but fails to successfully rebuild the
-        # registry we abort the transaction so that we don't leave it in an
-        # indeterminate state.
-
-        did_fixups=0
-        bad_things=0
-        try:
-            if app.checkGlobalRegistry():
-                LOG.info(
-                    'Beginning attempt to rebuild the global ZClass registry.')
-                app.fixupZClassDependencies(rebuild=1)
-                did_fixups=1
-                LOG.info(
-                    'The global ZClass registry has successfully been rebuilt.')
-                transaction.get().note('Rebuilt global product registry')
-                transaction.commit()
-        except:
-            bad_things=1
-            LOG.error('The attempt to rebuild the registry failed.',
-                       exc_info=True)
-            transaction.abort()
-
-        # Now we need to see if any (disk-based) products were installed
-        # during intialization. If so (and the registry has no errors),
-        # there may still be zclasses dependent on a base class in the
-        # newly installed product that were previously broken and need to
-        # be fixed up. If any really Bad Things happened (dangling pointers
-        # were found in the registry but it couldn't be rebuilt), we don't
-        # try to do anything to avoid making the problem worse.
-        if (not did_fixups) and (not bad_things):
-
-            # App.Product.initializeProduct will set this if a disk-based
-            # product was added or updated and we are not a ZEO client.
-            if getattr(Globals, '__disk_product_installed__', None):
-                try:
-                    LOG.info('New disk product detected, determining if we need '
-                             'to fix up any ZClasses.')
-                    if app.fixupZClassDependencies():
-                        LOG.info('Repaired broken ZClass dependencies.')
-                        self.commit('Repaired broked ZClass dependencies')
-                except:
-                    LOG.error('Attempt to fixup ZClass dependencies after '
-                              'detecting an updated disk-based product failed.',
-                              exc_info=sys.exc_info())
-                    transaction.abort()
-
     def install_products(self):
         app = self.getApp()
         # this defers to a function for b/c reasons

Modified: Zope/trunk/lib/python/OFS/Cache.py
===================================================================
--- Zope/trunk/lib/python/OFS/Cache.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/OFS/Cache.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -19,7 +19,6 @@
 import time
 
 from AccessControl.Permissions import view_management_screens
-from AccessControl.Role import _isBeingUsedAsAMethod
 from AccessControl.SecurityInfo import ClassSecurityInfo
 from AccessControl.SecurityManagement import getSecurityManager
 from AccessControl.unauthorized import Unauthorized
@@ -48,12 +47,7 @@
     return 0
 
 def filterCacheTab(ob):
-    if _isBeingUsedAsAMethod(ob):
-        # Show tab when in a ZClass def that uses Cacheable as a base.
-        parent = aq_parent(aq_inner(ob))
-        return isCacheable(parent)
-    else:
-        return managersExist(ob)
+    return managersExist(ob)
 
 def filterCacheManagers(orig, container, name, value, extra):
     '''
@@ -150,34 +144,12 @@
         '''
         return self.__enabled and self.ZCacheable_getCache()
 
-    security.declareProtected(ViewManagementScreensPermission,
-                              'ZCacheable_isAMethod')
-    def ZCacheable_isAMethod(self):
-        '''
-        Returns 1 when this object is a ZClass method.
-        '''
-        m = _isBeingUsedAsAMethod(self)
-        return m
-
     security.declarePrivate('ZCacheable_getObAndView')
     def ZCacheable_getObAndView(self, view_name):
         """
-        If this object is a method of a ZClass and we're working
-        with the primary view, uses the ZClass instance as ob
-        and our own ID as the view_name.  Otherwise returns
-        self and view_name unchanged.
+        Returns self and view_name unchanged.
         """
-        ob = self
-        if not view_name and self.ZCacheable_isAMethod():
-            # This is a ZClass method.
-            ob = aq_parent(aq_inner(self))
-            if isCacheable(ob):
-                view_name = self.getId()
-            else:
-                # Both the parent and the child have to be
-                # cacheable.
-                ob = self
-        return ob, view_name
+        return self, view_name
 
     security.declarePrivate('ZCacheable_get')
     def ZCacheable_get(self, view_name='', keywords=None,
@@ -253,8 +225,6 @@
         #   mtime_func
         #   self.mtime
         #   self.__class__.mtime
-        #   (if in a ZClass) zclass_instance.mtime
-        #                    zclass_instance.__class__.mtime
         mtime = 0
         if mtime_func:
             # Allow mtime_func to influence the mod time.
@@ -264,14 +234,6 @@
         klass = getattr(base, '__class__', None)
         if klass:
             mtime = max(getattr(klass, '_p_mtime', mtime), mtime)
-        if self.ZCacheable_isAMethod():
-            # This is a ZClass method.
-            instance = aq_parent(aq_inner(self))
-            base = aq_base(instance)
-            mtime = max(getattr(base, '_p_mtime', mtime), mtime)
-            klass = getattr(base, '__class__', None)
-            if klass:
-                mtime = max(getattr(klass, '_p_mtime', mtime), mtime)
         return mtime
 
     security.declareProtected(ViewManagementScreensPermission,
@@ -340,8 +302,7 @@
     security.declareProtected(ChangeCacheSettingsPermission,
                               'ZCacheable_setEnabled')
     def ZCacheable_setEnabled(self, enabled=0, REQUEST=None):
-        '''Changes the enabled flag. Normally used only when
-        setting up cacheable ZClass methods.'''
+        '''Changes the enabled flag.'''
         self.__enabled = enabled and 1 or 0
         if REQUEST is not None:
             return self.ZCacheable_manage(

Modified: Zope/trunk/lib/python/OFS/FindSupport.py
===================================================================
--- Zope/trunk/lib/python/OFS/FindSupport.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/OFS/FindSupport.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -100,11 +100,7 @@
             try:    items=obj.objectItems()
             except: return result
         else:
-            if getattr(base, 'meta_type', None) == 'Z Class':
-                try:    items=obj.propertysheets.methods.objectItems()
-                except: return result
-            else:
-                return result
+            return result
 
         try: add_result=result.append
         except:
@@ -145,14 +141,9 @@
                 add_result((p, ob))
                 dflag=0
 
-            is_zclass = getattr(bs, 'meta_type', None) == 'Z Class'
-            if search_sub and (hasattr(bs, 'objectItems') or is_zclass):
-                if is_zclass:
-                    subob = ob.propertysheets.methods
-                    sub_p = '%s/propertysheets/methods' % p
-                else:
-                    subob = ob
-                    sub_p = p
+            if search_sub and (hasattr(bs, 'objectItems')):
+                subob = ob
+                sub_p = p
                 self.ZopeFind(subob, obj_ids, obj_metatypes,
                                    obj_searchterm, obj_expr,
                                    obj_mtime, obj_mspec,

Modified: Zope/trunk/lib/python/OFS/PropertySheets.py
===================================================================
--- Zope/trunk/lib/python/OFS/PropertySheets.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/OFS/PropertySheets.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -290,8 +290,6 @@
 
     def _propertyMap(self):
         # Return a tuple of mappings, giving meta-data for properties.
-        # Some ZClass instances dont seem to have an _properties, so
-        # we have to fake it...
         return self.p_self()._properties
 
     security.declareProtected(access_contents_information, 'propertyMap')
@@ -769,43 +767,6 @@
 InitializeClass(DefaultPropertySheets)
 
 
-class FixedSchema(PropertySheet):
-    """A Fixed-schema property sheet has no control over it's schema
-
-    It gets its schema from another proprtysheet but has control over
-    its value storage.
-
-    This mix-in is used for ZClass instance proprtysheets, which store
-    their data in instances, but get their schema from the
-    proprtysheet managed in the ZClass.
-    """
-
-    def __init__(self, id, base, md=None):
-        FixedSchema.inheritedAttribute('__init__')(self, id, md)
-        self._base=base
-
-    def _propertyMap(self):
-        # Return a tuple of mappings, giving meta-data for properties.
-        r = []
-        for d in self._base._propertyMap():
-            d = d.copy()
-            mode = d.get('mode', 'wd')
-            if 'd' in mode:
-                d['mode']=filter(lambda c: c != 'd', mode)
-            r.append(d)
-
-        return tuple(r)
-
-    def propertyMap(self):
-        return self._propertyMap()
-
-    def property_extensible_schema__(self):
-        return 0
-        return self._base._extensible
-
-InitializeClass(FixedSchema)
-
-
 class vps(Base):
     """Virtual Propertysheets
 

Modified: Zope/trunk/lib/python/OFS/dtml/cacheable.dtml
===================================================================
--- Zope/trunk/lib/python/OFS/dtml/cacheable.dtml	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/OFS/dtml/cacheable.dtml	2009-01-23 18:30:05 UTC (rev 94962)
@@ -2,19 +2,8 @@
 <dtml-var manage_tabs>
 
 <form action="&dtml-absolute_url;" method="POST">
-<dtml-if ZCacheable_isAMethod>
 
-<input type="checkbox" name="enable" value="1"<dtml-if 
-ZCacheable_enabled> checked="checked"</dtml-if
->><span class="form-label">Cache this view of the object</span>
-<br>
 <div class="form-element">
-<input class="form-element" type="submit" name="ZCacheable_setEnabled:method" 
- value="Save Changes">
-</div>
-
-<dtml-else>
-<div class="form-element">
 <span class="form-label">
 Cache this object using:
 </span>
@@ -44,8 +33,6 @@
 </div>
 </dtml-if>
 
-</dtml-if>
-
 <dtml-var ZCacheable_configHTML>
 
 </form>

Modified: Zope/trunk/lib/python/OFS/interfaces.py
===================================================================
--- Zope/trunk/lib/python/OFS/interfaces.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/OFS/interfaces.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -321,11 +321,7 @@
         """
         """
 
-    def class_manage_path():
-        """
-        """
 
-
 # XXX: might contain non-API methods and outdated comments;
 #      not synced with ZopeBook API Reference;
 #      based on OFS.SimpleItem.Item
@@ -890,16 +886,7 @@
         """
         """
 
-    def fixupZClassDependencies(rebuild=0):
-        """
-        """
 
-    def checkGlobalRegistry():
-        """Check the global (zclass) registry for problems, which can
-        be caused by things like disk-based products being deleted.
-        Return true if a problem is found"""
-
-
 ##################################################
 # Event interfaces
 

Modified: Zope/trunk/lib/python/OFS/misc_.py
===================================================================
--- Zope/trunk/lib/python/OFS/misc_.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/OFS/misc_.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -52,7 +52,6 @@
     InstalledProduct_icon=ImageFile('App/www/installedProduct.gif')
     BrokenProduct_icon=ImageFile('App/www/brokenProduct.gif')
     Product_icon=ImageFile('App/www/product.gif')
-    Factory_icon=ImageFile('App/www/factory.gif')
     Permission_icon=ImageFile('App/www/permission.gif')
     ProductFolder_icon=ImageFile('App/www/productFolder.gif')
     PyPoweredSmall_Gif=ImageFile('App/www/PythonPoweredSmall.gif')
@@ -62,8 +61,7 @@
     zopelogo_jpg=ImageFile('App/www/zopelogo.jpg')
 
     Properties_icon=ImageFile('OFS/www/Properties_icon.gif')
-    Methods_icon=ImageFile('ZClasses/methods.gif')
-    Propertysheets_icon=ImageFile('ZClasses/propertysheets.gif')
+    Propertysheets_icon=ImageFile('OFS/www/Properties_icon.gif')
 
     ProductHelp_icon=ImageFile('HelpSys/images/productHelp.gif')
     HelpTopic_icon=ImageFile('HelpSys/images/helpTopic.gif')

Modified: Zope/trunk/lib/python/OFS/tests/testAppInitializer.py
===================================================================
--- Zope/trunk/lib/python/OFS/tests/testAppInitializer.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/OFS/tests/testAppInitializer.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -176,15 +176,6 @@
         self.failUnless('Owner' in app.__ac_roles__)
         self.failUnless('Authenticated' in app.__ac_roles__)
 
-    def test_install_zglobals(self):
-        from BTrees.OOBTree import OOBTree
-        self.configure(good_cfg)
-        i = self.getOne()
-        i.install_zglobals()
-        root = i.getApp()._p_jar.root()
-        self.failUnless(root.has_key('ZGlobals'))
-        self.failUnless(isinstance(root['ZGlobals'], OOBTree))
-
     def test_install_inituser(self):
         fname = os.path.join(TEMPNAME, 'inituser')
         f = open(fname, 'w')

Modified: Zope/trunk/lib/python/Products/BTreeFolder2/__init__.py
===================================================================
--- Zope/trunk/lib/python/Products/BTreeFolder2/__init__.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/BTreeFolder2/__init__.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -25,8 +25,3 @@
                       BTreeFolder2.manage_addBTreeFolder),
         icon='btreefolder2.gif',
         )
-
-    #context.registerHelp()
-    #context.registerHelpTitle('Zope Help')
-
-    context.registerBaseClass(BTreeFolder2.BTreeFolder2)

Modified: Zope/trunk/lib/python/Products/Five/deprecated.zcml
===================================================================
--- Zope/trunk/lib/python/Products/Five/deprecated.zcml	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/Five/deprecated.zcml	2009-01-23 18:30:05 UTC (rev 94962)
@@ -7,8 +7,6 @@
       class="AccessControl.User.BasicUserFolder"/>
 
   <five:deprecatedManageAddDelete
-      class="App.Factory.Factory"/>
-  <five:deprecatedManageAddDelete
       class="App.Permission.Permission"/>
 
   <five:deprecatedManageAddDelete
@@ -43,9 +41,4 @@
   <five:deprecatedManageAddDelete
       class="Products.ZCatalog.CatalogPathAwareness.CatalogAware"/>
 
-  <five:deprecatedManageAddDelete
-      class="ZClasses.Property.ZCommonSheet"/>
-  <five:deprecatedManageAddDelete
-      class="ZClasses.ZClass.ZClass"/>
-
 </configure>

Modified: Zope/trunk/lib/python/Products/OFSP/__init__.py
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/__init__.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/__init__.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -17,29 +17,11 @@
 import Version, OFS.Image, OFS.Folder, AccessControl.User
 import OFS.DTMLMethod, OFS.DTMLDocument, OFS.PropertySheets
 import OFS.OrderedFolder
-import ZClasses.ObjectManager
 
 from AccessControl.Permissions import add_documents_images_and_files
 from AccessControl.Permissions import add_folders
-from ZClasses import createZClassForBase
 from App.ImageFile import ImageFile
 
-createZClassForBase( OFS.DTMLMethod.DTMLMethod, globals()
-                   , 'ZDTMLMethod', 'DTML Method' )
-createZClassForBase( OFS.DTMLDocument.DTMLDocument, globals()
-                   , 'ZDTMLDocument', 'DTML Document' )
-createZClassForBase( OFS.Image.Image, globals()
-                   , 'ZImage', 'Image' )
-createZClassForBase( OFS.Image.File, globals()
-                   , 'ZFile', 'File' )
-createZClassForBase( OFS.Folder.Folder, globals()
-                   , 'ZFolder', 'Folder' )
-createZClassForBase( OFS.OrderedFolder.OrderedFolder, globals() )
-createZClassForBase( AccessControl.User.UserFolder, globals()
-                   , 'ZUserFolder', 'User Folder' )
-createZClassForBase( AccessControl.User.User, globals()
-                   , 'ZUser', 'User' )
-
 misc_={
     'version.gif':ImageFile('images/version.gif', globals())
     }
@@ -110,26 +92,5 @@
         legacy=(AccessControl.User.manage_addUserFolder,),
         )
 
-    ## Those both classes are relicts. We only withdraw them from the Add menu.
-    ## This way people will stop using them. They are undocumented anyway. 
-    ## People also have the chance to softly migrate their data and stop using the
-    ## versions they still use.
-
-    #context.registerClass(
-    #    Version.Version,
-    #    constructors=(Version.manage_addVersionForm,
-    #                  Version.manage_addVersion),
-    #    icon='images/version.gif'
-    #    )
-
-    #context.registerClass(
-    #    Draft.Draft,
-    #    constructors=(Draft.manage_addPrincipiaDraftForm,
-    #             Draft.manage_addPrincipiaDraft),
-    #    icon='images/draft.gif'
-    #    )
-
-    context.registerZClass(ZClasses.ObjectManager.ZObjectManager)
-
     context.registerHelp()
     context.registerHelpTitle('Zope Help')

Deleted: Zope/trunk/lib/python/Products/OFSP/help/Common-Instance-Property-Sheet.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/Common-Instance-Property-Sheet.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/Common-Instance-Property-Sheet.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,11 +0,0 @@
-Common Instance Property Sheet - Define properties for ZClasses.
-
-  Description
-
-    Common Instance Property Sheets allow ZClasses to define sets of
-    properties. A property sheets provides an editing view for the 
-    properties and default values for the properties. 
-
-    Individual instances of ZClasses have their own properties.
-    A property sheet provides a way to describe and edit a set of
-    properties.

Deleted: Zope/trunk/lib/python/Products/OFSP/help/Common-Instance-Property-Sheet_Add.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/Common-Instance-Property-Sheet_Add.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/Common-Instance-Property-Sheet_Add.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,17 +0,0 @@
-Common Instance Property Sheet - Add: Create a new Common Instance Property Sheet.
-  
-  Description
-
-    This view allows you to add a 'container object' that will enclose all the 
-    properties for the ZClass.
-
-  Controls
-
-    'Id' -- Specifies the id of the Common Instance Property Sheet.
-
-    'Title' -- Specifies an optional title of the Common Instance
-    Property Sheet.
-
-    'Add' -- Creates the Common Instance Property Sheet.
-
-

Modified: Zope/trunk/lib/python/Products/OFSP/help/Product.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/Product.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/Product.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -5,7 +5,6 @@
     Products allow you to extend Zope by creating new types of addable Zope
     objects.
 
-    A Product contains other objects such as ZClasses and Factories
-    which allows you
+    A Product contains other objects such as Factories which allows you
     to make your objects available via the product add list.
 

Modified: Zope/trunk/lib/python/Products/OFSP/help/PropertySheet.py
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/PropertySheet.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/PropertySheet.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -27,8 +27,7 @@
 
         Return a namespace string usable as an xml namespace
         for this property set. This may be an empty string if
-        there is no default namespace for a given property sheet
-        (especially property sheets added in ZClass definitions).
+        there is no default namespace for a given property sheet.
 
         Permission -- Python only
 

Modified: Zope/trunk/lib/python/Products/OFSP/help/PropertySheets.py
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/PropertySheets.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/PropertySheets.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -23,7 +23,7 @@
     instances.
 
     Objects that support property sheets (objects that support the
-    PropertyManager interface or ZClass objects) have a
+    PropertyManager interface) have a
     'propertysheets' attribute (a PropertySheets instance) that is the
     collection of PropertySheet objects. The PropertySheets object
     exposes an interface much like a Python mapping, so that

Deleted: Zope/trunk/lib/python/Products/OFSP/help/Security_Define-Permissions.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/Security_Define-Permissions.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/Security_Define-Permissions.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,60 +0,0 @@
-Security - Define Permissions: Map permissions.
-  
-  Description
-
-    The "Define Permissions" view is used to define how the operations
-    of this object (or objects that acquire permission settings from
-    this object) correspond to the operations defined by your product
-    or ZClass.
-
-    Permissions
-
-      Permissions are used to represent abstract operations or types of
-      usage. A permission may correspond to many low-level object
-      operations. Permissions provide a way to control access to
-      operations without having to list each operation explicitly.
-
-      When creating Products or ZClasses, we use high-level objects,
-      like DTML Methods to define operations.  These high-level objects
-      have their own permissions, which represent abstract operations on
-      the low-level operations of these high-level objects.
-
-      When defining permissions for our products and ZClasses we need
-      to define what low-level operations these new permissions
-      correspond to.  We could enumerate the low-level operations of
-      the high-level objects used to implement the operations of our
-      products or ZClasses, but this would be cumbersome, error prone,
-      and likely to break as the interfaces of the high-level objects
-      evolve.
-
-      What we do instead is to treat the permissions of the high-level
-      objects used to implement a Product or ZClass operations as the
-      low-level operations that the product or ZClass operations
-      abstract.
-
-  Controls
-
-    The view has a table with two columns. The first column lists the
-    permissions for an object. The second column specifies the
-    permissions that should have this permission in this product or
-    ZClass. For ZClass methods only permissions that are defined for
-    the ZClass are permitted.
-
-    In general any permissions that include operations that change
-    (mutate) an object should be disabled. Otherwise, a method could
-    be modified when used on an instance, such as a ZClass instance.
-
-    This interface is used to define how the operations of this object
-    (or objects that acquire permission settings from this object)
-    correspond to the operations defined by your product or ZClass.
-
-    **Note: The 'View' permission should be always mapped to the
-    'View' permission, since every user, even 'Anonymous User' has
-    this permission.**
-
-    'Permission for this object' -- The object permission to map.
-
-    'Permissions that correspond to (i.e. have) this permission' --
-    The Product or ZClass permission to map to.
-
-    'Change' -- Changes the permissions mapping.

Deleted: Zope/trunk/lib/python/Products/OFSP/help/ZClass.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/ZClass.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/ZClass.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,6 +0,0 @@
-ZClass - Define new Zope objects.
-
-  Description
-
-    ZClasses define new types of Zope objects.
-

Deleted: Zope/trunk/lib/python/Products/OFSP/help/ZClass_Add.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/ZClass_Add.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/ZClass_Add.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,45 +0,0 @@
-ZClass - Add: Add a new ZClass
-  
-  Description
-
-    This view allows you to create a new ZClass.
-
-  Controls
-
-    'Id' -- The id of the ZClass.
-
-    'Title' -- The optional title of the ZClass.
-
-    'Meta type' -- The name of the ZClass as it will appear in the
-    product add list.
-
-    'Create constructor objects' -- Create the necessary objects to
-    construct new ZClass instances. The created constructor objects are
-    a Zope Permission, a Zope Factory, an add method and an add form.
-
-      **Note: You must specify a 'Meta type' to create constructor objects**
-
-    'Base classes' -- Base classes of the ZClass.
-
-      To add a base class select it from the 'Unselected' list and
-      click the right arrow button. To remove a base class select it
-      from the 'Selected' list and click the left arrow button. The
-      names of base classes are divided into two parts separated by a
-      colon indicating the product name and the class name of the base
-      class. The order of Base classes is important.
-
-    'Include standard Zope persistent object base classes' -- Subclass
-    Zope persistence classes and thereby act as a normal persistent
-    object.
-
-    'Add' -- Creates the ZClass.
-
-
-
-
-
-
-
-
-
-

Deleted: Zope/trunk/lib/python/Products/OFSP/help/ZClass_Basic.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/ZClass_Basic.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/ZClass_Basic.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,27 +0,0 @@
-ZClass - Basic: Basic class attributes.
-  
-  Description
-
-    This view allows you to manage the basic attributes of a ZClass.
-
-  Controls
-
-    'Title' -- The title of the ZClass.
-
-    'Meta type' -- The name of the ZClass as it appears in the product
-    add list.
-
-    'class id' -- The unique class identifier for the ZClass.
-
-    'icon' -- The path to the ZClass's icon.
-
-    'Icon image' -- Upload a new image file to sever as the ZClass's
-    icon. Use the 'Browse...' button to local a file to upload.
- 
-      The uploaded icon file should be a 16x16 pixel GIF file.
-
-    'Change' -- Change the ZClass.
-
-
-
-

Deleted: Zope/trunk/lib/python/Products/OFSP/help/ZClass_Methods.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/ZClass_Methods.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/ZClass_Methods.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,25 +0,0 @@
-ZClass - Methods: Manage ZClass methods.
-  
-  Description
-
-    This view allows you to manage ZClass methods.
-
-    A ZClass inherits methods from its base classes. It can also
-    contain methods which are managed through the web. This view
-    allows you to create and edit methods such as DTML Methods, ZSQL
-    Methods, and External Methods though the web. Methods that you
-    create through the web will be accessible as methods on instances
-    of the ZClass.
-
-    The creation and management of methods proceeds exactly like the
-    management of a Folder's contents. See "Folder - Contents".  The
-    main difference between editing method objects and normal objects
-    is that methods have a 'Define Permissions' view in place of a
-    'Security' view. See "Security - Define Permissions".
-
-    If you create ZClasses inside the Methods view of a ZClass
-    instances of the inner class will be addable to instances of the
-    outer class. Typically the outer class will subclass
-    'ObjectManager' and the inner class will be only relevant inside
-    the outer class.
-

Deleted: Zope/trunk/lib/python/Products/OFSP/help/ZClass_Permissions.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/ZClass_Permissions.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/ZClass_Permissions.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,22 +0,0 @@
-ZClass - Permissions: Select ZClass permissions.
-  
-  Description
-
-    This view allows you to select permissions to be used by a ZClass.
-
-    When setting permissions for individual methods or property sheets
-    of a ZClass, you will be able to select from inherited permissions
-    and class permission which you set with this view.
-        
-  Controls
-
-    'Class permissions' -- The permissions available to your ZClass in
-    addition to inherited permissions.
-
-    'Inherited permissions' -- Indicates the inherited permissions of
-    your ZClass.
-
-    'Change' -- Change Class permissions.
-
-
-

Deleted: Zope/trunk/lib/python/Products/OFSP/help/ZClass_Property-Sheets.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/ZClass_Property-Sheets.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/ZClass_Property-Sheets.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,15 +0,0 @@
-ZClass - Property Sheets: Manage ZClass property sheets.
-
-  Description
-
-    This view allows you to manage a ZClass's property sheets.
-
-    Property sheets provide a way to organize ZClass properties. A property 
-    sheet defines default values for ZClass instance attributes and provides 
-    an editing method for the attributes.
-
-    The creation and management of property sheets proceeds exactly like 
-    the management of a Folder's contents. See "ObjectManager - Contents".
-
-
-

Deleted: Zope/trunk/lib/python/Products/OFSP/help/ZClass_Subobjects.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/ZClass_Subobjects.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/ZClass_Subobjects.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,19 +0,0 @@
-ZClass - Subobjects: Define suboject types.
-
-  Description
-
-    This view allows you to control what types of objects
-    are addable within instances of your ZClass.
-
-  Controls
-
-    Select one or more of the listed meta-types to indicate that
-    objects of these types can be added to instances of your ZClass.
-
-    'Objects should appear in folder lists' -- Controls whether or not
-    instances of your ZClass appear as folders in the left Zope
-    management frame.
-
-    'Change' -- Change subobject settings.
-
-

Deleted: Zope/trunk/lib/python/Products/OFSP/help/ZClass_Views.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/ZClass_Views.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/ZClass_Views.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,51 +0,0 @@
-ZClass - Views: Define management views.
-
-  Description
-
-    This view allows you to manage a ZClass's views.
-
-    Views are managements screens that are available as tabs while
-    managing a Zope object. To provides through the web management for
-    your ZClass you need to define management views. Each management
-    view consists of a name, a method, and a help topic. When the
-    management view is selected by the user the view's method is
-    executed. Typically view methods are edit forms. Help topics
-    provide help for views. If a view has an associated help topic, a
-    help button will appear on the management view.
-
-    **Note: A view will not be visible to a user unless they have
-    adequate permissions to execute the view method.**
-
-  Controls
-
-    Editing Views
-
-      Views are listed one per line.
-
-      '[Checkbox]' -- Selects a view.
-
-      'Method' -- The method of the view.
-
-      'Help Topic' -- The help topic associated with the view.
-
-      'Change' -- Change the views.
-
-      'Delete' -- Delete the selected views.
-
-      'First' -- Moves the selected view to the beginning of the view
-      list. This allows you to change the order of the views.
-
-    Creating Views
-
-      'New' -- Allows you to create a new view. In the 'Name' field you
-      will be able to specify the label name of the view. The 'Method'
-      and 'Help Topic' field are the same as above.
-
-      'Name' -- The name of the view.
-
-      'Method' -- The method of the view.
-
-      'Help Topic' -- The help topic associated with the view.
-
-      'Add' -- Create a new view.
-

Deleted: Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,10 +0,0 @@
-Zope Factory: Product creation facility.
-
-  Description
-  
-    Zope Factories insert objects into the product add list.
-
-    Typically Factories are used to place ZClasses in the product add
-    list. 
-        
-

Deleted: Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory_Add.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory_Add.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory_Add.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,23 +0,0 @@
-Zope Factory - Add: Create a Zope Factory.
-  
-  Description
-
-    This view allows you to create a new Zope Factory.
-
-  Controls
-
-    'Id' -- The id of the Zope Factory.
-
-    'Title' --  The optional title of the Zope Factory.
-
-    'Add list name' -- The name that will appear on the in the product
-    add list. In the case of ZClasses this is normally the ZClass's
-    meta-type.
-
-    'Method' -- The method that is executed when the product is chosen
-    from the product add list. Typically this method is an add form.
-
-    'Generate' -- Create the Factory and add its entry to the product
-    add list.
-
-

Deleted: Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory_Edit.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory_Edit.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/Zope-Factory_Edit.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1,23 +0,0 @@
-Zope Factory - Edit: Edit Factory.
-  
-  Description
-
-     This view allows you to edit a Zope Factory.
-
-  Controls
-
-    'Title' --  The optional title of the Zope Factory.
-
-    'Add list name' -- The name that will appear on the in the product
-    add list. In the case of ZClasses this is normally the ZClass's
-    meta-type.
-
-    'Method' -- The method that is executed when the product is chosen
-    from the product add list. Typically this method is an add form.
-
-    'Permission' -- The permission needed to execute the factory. If
-    the user does not have the Factory permission, the Factory's entry
-    will not show up in the product add list.
-
-    'Change' -- Change the Factory and update the product add list.
-

Modified: Zope/trunk/lib/python/Products/OFSP/help/Zope-Permission.stx
===================================================================
--- Zope/trunk/lib/python/Products/OFSP/help/Zope-Permission.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/OFSP/help/Zope-Permission.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -3,5 +3,3 @@
   Description
 
     Zope Permissions allow you to define new permissions.
-
-    Typically new Permissions are associated with operations on ZClasses.

Modified: Zope/trunk/lib/python/Products/TemporaryFolder/mount.py
===================================================================
--- Zope/trunk/lib/python/Products/TemporaryFolder/mount.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/TemporaryFolder/mount.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -62,7 +62,7 @@
     _v_data = None
     _v_connect_error = None
 
-    def __init__(self, path, params=None, classDefsFromRoot=1):
+    def __init__(self, path, params=None, classDefsFromRoot=None):
         '''
         @arg path The path within the mounted database from which
         to derive the root.
@@ -74,10 +74,6 @@
         and use the existing database.  Include the class name of
         the storage.  For example,
         ZEO params might be "ZODB.ZEOClient localhost 1081".
-
-        @arg classDefsFromRoot If true (the default), MountPoint will
-        try to get ZClass definitions from the root database rather
-        than the mounted database.
         '''
         # The only reason we need a __mountpoint_id is to
         # be sure we don't close a database prematurely when
@@ -90,7 +86,6 @@
             params = self.__mountpoint_id
         self._params = repr(params)
         self._path = path
-        self._classDefsFromRoot = classDefsFromRoot
 
     def _createDB(self):
         '''Gets the database object, usually by creating a Storage object
@@ -111,9 +106,6 @@
                 db = self._createDB()
                 newMount = 1
                 dbs[params] = (db, {self.__mountpoint_id:1})
-
-                if getattr(self, '_classDefsFromRoot', 1):
-                    db.classFactory = parentClassFactory
             else:
                 db, mounts = dbInfo
                 # Be sure this object is in the list of mount points.

Modified: Zope/trunk/lib/python/Products/ZCatalog/CatalogAwareness.py
===================================================================
--- Zope/trunk/lib/python/Products/ZCatalog/CatalogAwareness.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/ZCatalog/CatalogAwareness.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -23,8 +23,8 @@
 class CatalogAware:
     """ This is a Mix-In class to make objects automaticly catalog and
     uncatalog themselves in Zope, and to provide some other basic
-    attributes that are useful to catalog.  Note that if your class or
-    ZClass subclasses CatalogAware, it will only catalog itself when
+    attributes that are useful to catalog.  Note that if your class
+    subclasses CatalogAware, it will only catalog itself when
     it is added or copied in Zope.  If you make changes to your own
     object, you are responsible for calling your object's index_object
     method. """

Modified: Zope/trunk/lib/python/Products/ZCatalog/CatalogPathAwareness.py
===================================================================
--- Zope/trunk/lib/python/Products/ZCatalog/CatalogPathAwareness.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/ZCatalog/CatalogPathAwareness.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -19,8 +19,8 @@
 class CatalogAware:
     """ This is a Mix-In class to make objects automaticly catalog and
     uncatalog themselves in Zope, and to provide some other basic
-    attributes that are useful to catalog.  Note that if your class or
-    ZClass subclasses CatalogAware, it will only catalog itself when
+    attributes that are useful to catalog.  Note that if your class
+    subclasses CatalogAware, it will only catalog itself when
     it is added or copied in Zope.  If you make changes to your own
     object, you are responsible for calling your object's index_object
     method. """
@@ -119,16 +119,3 @@
             for item in obj.objectValues():
                 self.reindex_all(item)
         return 'done!'
-
-class CatalogPathAware(CatalogAware):
-    """
-    This is a stub class that gets registered in __init__.py as a
-    ZClass base class.  Its reason for existance is to make the name
-    that shows up in the ZClass Product list different than 'ZCatalog:
-    CatalogAware', which is the name registered by
-    CatalogAwareness.CatalogAware.  The fix should *really* be to
-    change the product registry to keep the whole module/class path
-    and to make the ZClass add UI show the whole path, but this is
-    nontrivial, we don't want to spend a lot of time on ZClasses, and
-    this works.
-    """

Modified: Zope/trunk/lib/python/Products/ZCatalog/ZCatalog.txt
===================================================================
--- Zope/trunk/lib/python/Products/ZCatalog/ZCatalog.txt	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/ZCatalog/ZCatalog.txt	2009-01-23 18:30:05 UTC (rev 94962)
@@ -99,10 +99,9 @@
     Most the work is done in the first step, which is getting objects
     into the index.  This is done in two ways.  First, if your objects
     are ZCatalog-aware they automatically update the index when they
-    are added, edited or directly deleted.  A ZCatalog-aware object is
-    one that is an instance of a 'Z Class' that informs the 'ZCatalog'
-    of changes.  *Directly deleted* means the object was deleted from
-    a Folder, not the deletion of a containing Folder.
+    are added, edited or directly deleted.  *Directly deleted* means
+    the object was deleted from a Folder, not the deletion of a
+    containing Folder.
 
     The second way that site contents get updated is by "finding"
     information "into" the 'ZCatalog'.  An operation based on Zope's
@@ -136,300 +135,6 @@
     ZCatalogs can also be queried directly from DTML, as shown in the
     example below.
 
-  Example using Z Classes
-
-    The first example shows how to give your Zope site a long-desired
-    feature: full text-searches of your content.  The example assumes
-    you already have a number of DTML Methods/Documents to catalog.
-
-        o Install 'ZCatalog' as instructed above
-
-        o In the root folder of your Zope server, add a 'ZCatalog'.
-
-        o Type in the id 'catalog' and hit 'Add'.
-
-    You now have a brand new 'ZCatalog' named 'catalog' in your root
-    folder.
-
-        o Click on it.
-
-    Now you are looking at the 'ZCatalog' 'Contents' view.  It says
-    the catalog is empty.  We'll catalog some objects in a moment, but
-    first we have to tell it what portions of objects we are
-    specifically interested in.
-
-        o Click on 'Indexes'.
-
-    This management view is where the attributes to be indexed are
-    defined.
-
-        o In the 'Add index' field, type 'raw'.
-
-        o Click 'Add'.
-
-    Now that the indexes are defined, a set of objects can be selected
-    for cataloging.
-    
-        o Click on 'Find items to ZCatalog'.
-
-    For this example, we are only interested in DTML Documents and
-    Methods.
-
-        o Deselect 'All type'.
-
-        o Select 'DTML Method' and 'DTML Document'.
-
-        o Click 'Find'.
-
-    ZCatalog will report how many items it found, and then present an
-    interface for excluding specific objects.
-    
-        o Click 'Catalog Items'.
-
-    Great, now that the catalog is stocked, we can create a user
-    interface to it.
-    
-        o Return to the root folder's management view.
-
-        o Add a 'Z Search Interface'.
-
-    'ZCatalog' participates in the Zope Search architecture.  You
-    simply have to fill in this form, and a basic user interface will
-    be created.
-
-        o Select 'catalog' in the list beside 'Select one or more searchable
-          objects'.
-        
-        o Beside 'Report Id', type 'report'.
-
-        o Beside 'Search Input Id', type 'search'.
-
-    'report' and 'search' are the Ids of two DTML Methods which will
-    be created in your root folder.
-
-        o Click 'Add'.
-
-    Congratulations, if all has gone well, you can now find references
-    to any word in your DTML pages.  Try it by viewing 'search'.  Type
-    a common word in the 'Raw' field, and you should be presented with
-    a list of hits.  However, none of the results returned can be
-    clicked on.  To fix this, go to the management view of 'report'.
-    'report' is called by 'search' to display the results from
-    'catalog'.  'report' is just a simple '<!--#in catalog-->' loop
-    with a few refinements.  'catalog' knows which results to return
-    by looking at the REQUEST variable, which contains the input from
-    the 'search' form.
-
-        o In the source of 'report', find the following line::
-
-            <tr><!--#var title--></tr>
-        
-        o Replace it with this::
-
-            <tr>
-             <a href="<!--#var "catalog.getpath(data_record_id_)"-->">
-              <!--#var title-->
-             </a>
-            </tr>
-
-    This is a little confusing at first.  Keep in mind that ZCatalog
-    does not return a list of your database objects.  What it returns
-    are actually fairly unintelligent instances of a Record subclass.
-    These record objects contain copies of data from attributes of
-    catalog objects.  The 'ZCatalog' 'MetaData Table' view defines
-    which attributes are copied.
-
-    (By default, these record objects are just SLIGHTLY more
-    intelligent than a raw tuple.  'Catalog' can be told to use a
-    custom, intelligent class for results.  Please see the 'Catalog'
-    __init__ method in 'lib/python/Products/ZCatalog/Catalog.py' for
-    more information.)
-
-    Fortunately, ZCatalog provides a utility function for going from
-    result objects to the object's path.  It is called, aptly enough,
-    'getpath'.  'getpath' expects to be passed the unique integer
-    identifier of the cataloged object.  Results store that id as
-    'data_record_id_'.
-
-    Commit this change, and perform another search.  Now the title can
-    be clicked on to take you to the full page.
-    
-  Example cataloging custom objects
-
-    As if full-text searches of your entire site weren't good enough,
-    ZCatalog can also catalog Z Classes, Products, and in fact any
-    Python object you can put in a ZODB.  Here is an example using a Z
-    Class, but the principles apply to any kind of object.
-
-    First, we're going to need something to catalog.  Follow the 'Z
-    Class' tutorial to create the CD 'Z Class'.  Back?  Good.
-
-        o Create a folder, 'CDs', and create a number of instances of
-        the CD Z Class in it.
-
-    'cd1' through 'cd5' should be plenty.  Remember to fill each of
-    them in from their Properties view.
-
-    Now we want to create a searchable catalog of CDs.
-
-      o Go to the 'CDs' folder and create a 'ZCatalog' with an ID 'cd_cat'.
-
-      o Click on the objects Indexes view.
-
-    This screen shows that, by default, 'ZCatalog' is interested in an
-    object's 'id','title', 'meta_type', and
-    'bobobase_modification_time'.  You will almost always want to
-    index additional information.  In this case, we would also like to
-    index the artist and description of CDs.
-
-      o Type 'artist' into the 'Add Index' field. 
-
-    For the sake of example, we're going to use a FieldIndex index for
-    artist.  This will give us the option of putting an HTML SELECT
-    box for artists on the search form.
-
-      o Select FieldIndex from the Index type drop down, and click
-      'Add'.
-
-      o Also add an index for 'description', but leave TextIndex
-      selected.
-
-    This will allow us to search for individual words within the
-    description.
-
-      o Click on 'MetaData Table'.
-
-    This is where we tell the 'ZCatalog' what attributes of cataloged
-    objects to cache.  These cached values are available from search
-    results without having to look up the actual indexed object.  The
-    tradeoff for the speed is extra memory, as information from the
-    content is duplicated in the 'ZCatalog'.
-
-    You will probably want to keep the schema light-weight, so we're
-    not going to add 'description' to it.  Type 'artist' in the 'Add
-    column' field and click 'Add'.
-
-      o Click on the 'Find Items to Catalog' view.
-
-    This is the interface you use to tell the 'ZCatalog' which items
-    to index.  Right now, beside 'Find objects of type:', 'All types'
-    is selected.
-
-      o Deselect 'All types'.
-
-      O Scroll down and select CD.
-
-    You could use the rest of the form to be more specific, but since
-    we want to catalog all the CDs,
-
-      o Click 'Find'.
-
-    'ZCatalog' will report 'Found 5 items.'  It is now giving you an
-    opportunity to exclude some of the matched items from the index.
-    Again, we want all of them, so,
-
-      o Click 'Catalog Items'.
-
-    You should at this point see a list of the indexed objects.  Also
-    of note is the 'Update Catalog' button.  You have to use it
-    whenever you want your 'ZCatalog' to notice changes you've made to
-    the objects it's indexed.
-
-  Creating Search Forms And Result Reports
-
-    This catalog isn't much good without some way of querying it.
-
-      o Go back to your 'CDs' folder's management screen and add a Z
-        Search Interface.
-
-    The search add form will automatically detect your cd_cat
-    'ZCatalog' and offer it as a searchable document.  Make sure it is
-    selected.
-
-      o Fill in 'cd_report' for 'Report ID' and 'cd_search' for
-        'Search Input ID'.
-
-    Those are the ids of two DTML methods that will be generated in
-    the 'CDs' folder.
-
-      o Click 'Add'.
-
-      o View the 'cd_search' Catalog (at, for example,
-        http://localhost:9673/CDs/cd_search).
-
-    You will see a basic search interface, with fields for searching
-    on 'title', modification date, 'id', 'artist', 'meta type' and
-    'description'.  If you fill in one more more of the fields and
-    click 'Submit Query', cd_report will be displayed.  It is passed
-    the search criteria and uses it to get a list from cd_cat to
-    iterate over.  It is merely displaying the information from the
-    ZCatalog's MetaData table, but of course it can be enriched.
-
-    Try a few more searches.  You'll find that you can type any single
-    word from the title or description and get a match, but for artist
-    you must type the exact string.  That's because artist was indexed
-    as a FieldIndex, which gives us an opportunity to present a more
-    convenient interface.
-
-    Go back to the 'cd_search' management interface, and change
-    it's source to look like this::
-
-  <xmp>
-  <!--#var standard_html_header-->
-  <form action="cd_report" method="get">
-  <h2><!--#var document_title--></h2>
-  Enter query parameters:<br><table>
-  <tr><th>Title</th>
-      <td><input name="title"
-                 width=30 value=""></td></tr>
-  <tr><th>Artist</th>
-      <td>
-       <select name="artist">
-        <option value="">All</option>
-        <!--#in expr="cd_cat.uniqueValuesFor('artist')"-->
-         <option value="<!--#var sequence-item-->">
-          <!--#var sequence-item-->
-         </option>
-        <!--#/in-->
-       </select>
-      </td>
-  </tr>
-  <tr><th>Description</th>
-      <td><input name="description"
-                 width=30 value=""></td></tr>
-  <tr><td colspan=2 align=center>
-  <input type="SUBMIT" name="SUBMIT" value="Submit Query">
-  </td></tr>
-  </table>
-  </form>
-  <!--#var standard_html_footer-->
-  </xmp>
-
-    This is a search form somewhat more appropriate for the CD 'Z
-    Class'.  Unrelated fields have been removed, and the 'artist'
-    field has been changed to a drop-down menu.  Let's augment the
-    output of 'cd_report' to make the title a link to the actual CD
-    object.
-
-    Taking a look at 'cd_report', note that the search results are
-    obtained with a simple '<!--#in cd_cat ...-->' tag.  The search
-    criteria is automatically obtained by the 'ZCatalog' from the form
-    input.  The line we're interested in is this one::
-
-            <td><!--#var title--></td>
-
-    Change it to read::
-
-            <td>
-             <a href="<!--#var "cd_cat.getpath(data_record_id_)"-->">
-              <!--#var title-->
-             </a>
-            </td>
-
-    Now, assuming you have added the index_html document template to
-    your CD 'Z Class', clicking on a search result will take you to
-    the CD's detailed display.
-
   Using 'ZCatalog' In A Zope Site
 
     The 'ZCatalog' provides high-speed access to what is on your site.

Modified: Zope/trunk/lib/python/Products/ZCatalog/__init__.py
===================================================================
--- Zope/trunk/lib/python/Products/ZCatalog/__init__.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Products/ZCatalog/__init__.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -13,27 +13,8 @@
 
 """ZCatalog product"""
 
-import ZCatalog, CatalogAwareness, CatalogPathAwareness
+import ZCatalog
 
-# BBB: ZClasses are deprecated but we don't want the warning to appear here
-import warnings
-warnings.filterwarnings('ignore', message='^ZClasses', append=1)
-try:
-    from ZClasses import createZClassForBase
-finally:
-    del warnings.filters[-1]
-    try:
-        del __warningregistry__
-    except NameError:
-        pass
-
-createZClassForBase( ZCatalog.ZCatalog , globals()
-                   , 'ZCatalogBase', 'ZCatalog' )
-createZClassForBase( CatalogAwareness.CatalogAware, globals()
-                   , 'CatalogAwareBase', 'CatalogAware' )
-createZClassForBase( CatalogPathAwareness.CatalogPathAware, globals()
-                   , 'CatalogPathAwareBase', 'CatalogPathAware' )
-
 def initialize(context):
     context.registerClass(
         ZCatalog.ZCatalog,

Modified: Zope/trunk/lib/python/Shared/DC/Scripts/dtml/scriptBindings.dtml
===================================================================
--- Zope/trunk/lib/python/Shared/DC/Scripts/dtml/scriptBindings.dtml	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Shared/DC/Scripts/dtml/scriptBindings.dtml	2009-01-23 18:30:05 UTC (rev 94962)
@@ -48,7 +48,6 @@
   This is the <dtml-with expr="aq_inner.aq_parent">&dtml-meta_type;
   "&dtml.missing.html_quote-title_or_id;"</dtml-with>, in which this
   script is located.  This doesn't change unless you move the script.
-  If the script is in a ZClass, the Container is the class instance.
   <br /><br />
   Recommended value: <code>container</code>
   </div>

Modified: Zope/trunk/lib/python/Shared/DC/ZRDB/DA.py
===================================================================
--- Zope/trunk/lib/python/Shared/DC/ZRDB/DA.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Shared/DC/ZRDB/DA.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -13,18 +13,11 @@
 __doc__='''Generic Database adapter'''
 __version__='$Revision: 1.116 $'[11:-2]
 
-import base64
-from cPickle import dumps
-from cPickle import loads
 from cStringIO import StringIO
-import marshal
-import os
 import re
 import string
 import sys
 from time import time
-from zlib import compress
-from zlib import decompress
 
 from AccessControl.DTML import RestrictedDTML
 from AccessControl.Permissions import change_database_methods
@@ -35,7 +28,6 @@
 from AccessControl.SecurityManagement import getSecurityManager
 from Acquisition import Implicit
 from App.class_init import InitializeClass
-from App.Dialogs import MessageDialog
 from App.Extensions import getBrain
 from App.special_dtml import DTMLFile
 from DocumentTemplate import HTML
@@ -51,7 +43,6 @@
 
 from Aqueduct import BaseQuery
 from Aqueduct import custom_default_report
-from Aqueduct import decodestring
 from Aqueduct import default_input_form
 from Aqueduct import parse
 from RDB import File
@@ -102,7 +93,6 @@
     cache_time_=0
     max_cache_=100
     class_name_=class_file_=''
-    _zclass=None
     allow_simple_one_argument_traversal=None
     template_class=SQL
     connection_hook=None
@@ -204,7 +194,7 @@
     security.declareProtected(change_database_methods, 'manage_advanced')
     def manage_advanced(self, max_rows, max_cache, cache_time,
                         class_name, class_file, direct=None,
-                        REQUEST=None, zclass='', connection_hook=None):
+                        REQUEST=None, connection_hook=None):
         """Change advanced properties
 
         The arguments are:
@@ -253,22 +243,10 @@
 
         self.connection_hook = connection_hook
 
-        if zclass:
-            for d in self.aq_acquire('_getProductRegistryData')('zclasses'):
-                if ("%s/%s" % (d.get('product'),d.get('id'))) == zclass:
-                    self._zclass=d['meta_class']
-                    break
-
-
         if REQUEST is not None:
             m="ZSQL Method advanced settings have been set"
             return self.manage_advancedForm(self,REQUEST,manage_tabs_message=m)
-##            return self.manage_editedDialog(REQUEST)
 
-    #def getFindContent(self):
-    #    """Return content for use by the Find machinery."""
-    #    return '%s\n%s' % (self.arguments_src, self.src)
-
     security.declareProtected(view_management_screens, 'PrincipiaSearchSource')
     def PrincipiaSearchSource(self):
         """Return content for use by the Find machinery."""
@@ -493,8 +471,6 @@
 
         if hasattr(self, 'aq_parent'):
             p=self.aq_parent
-            if self._isBeingAccessedAsZClassDefinedInstanceMethod():
-                p=p.aq_parent
         else:
             p=None
 
@@ -529,16 +505,13 @@
         else:
             brain=self._v_brain=getBrain(self.class_file_, self.class_name_)
 
-        zc=self._zclass
-        if zc is not None: zc=zc._zclass_
-
         if type(result) is type(''):
             f=StringIO()
             f.write(result)
             f.seek(0)
-            result = File(f,brain,p, zc)
+            result = File(f,brain,p, None)
         else:
-            result = Results(result, brain, p, zc)
+            result = Results(result, brain, p, None)
         columns = result._searchable_result_columns()
         if test__ and columns != self._col:
             self._col=columns
@@ -573,30 +546,9 @@
     def connected(self):
         return getattr(getattr(self, self.connection_id), 'connected')()
 
-
-    security.declareProtected(change_database_methods,
-                              'manage_product_zclass_info')
-    def manage_product_zclass_info(self):
-        r=[]
-        Z=self._zclass
-        Z=getattr(Z, 'aq_self', Z)
-        for d in self.aq_acquire('_getProductRegistryData')('zclasses'):
-            z=d['meta_class']
-            if hasattr(z._zclass_,'_p_deactivate'):
-                # Eek, persistent
-                continue
-            x={}
-            x.update(d)
-            x['selected'] = (z is Z) and 'selected' or ''
-            del x['meta_class']
-            r.append(x)
-
-        return r
-
 InitializeClass(DA)
 
 
-
 ListType=type([])
 class Traverse(Base):
     """Helper class for 'traversing' searches during URL traversal

Modified: Zope/trunk/lib/python/Shared/DC/ZRDB/dtml/advanced.dtml
===================================================================
--- Zope/trunk/lib/python/Shared/DC/ZRDB/dtml/advanced.dtml	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Shared/DC/ZRDB/dtml/advanced.dtml	2009-01-23 18:30:05 UTC (rev 94962)
@@ -91,43 +91,11 @@
     <input name="class_file" size="30" value="&dtml-class_file_;">
     </td>
   </tr>
-
-<dtml-if manage_product_zclass_info>
   <tr>
-    <td align="left" valign="top" colspan="2">
-    <div class="form-text">
-    <br />
-    You may specify a <strong>ZClass</strong> for the data records.
-    </div>
-    </td>
-  </tr>
-  <tr>
     <td align="left" valign="top">
-    <div class="form-label">
-    ZClass
-    </div>
     </td>
     <td align="left" valign="top">
     <div class="form-element">
-           <select name="zclass">
-             <option value="">No ZClass</option>
-	     <dtml-in manage_product_zclass_info mapping>
-               <dtml-with "_(v='%s/%s' % (product, id))">
-                 <option value="&dtml-v;" &dtml-selected;>
-		    &dtml-product; &dtml-id;
-		    (&dtml-meta_type;)</option>
-	       </dtml-with>
-	     </dtml-in>
-	   </select>
-    </div>
-    </td>
-  </tr>
-</dtml-if>
-  <tr>
-    <td align="left" valign="top">
-    </td>
-    <td align="left" valign="top">
-    <div class="form-element">
     <input class="form-element" type="submit" name="submit" 
      value="Save Changes">
     </div>

Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/doc/API.stx
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/doc/API.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/doc/API.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -297,8 +297,6 @@
 
         setupCoreSessions(app=None)
 
-        setupZGlobals(app=None)
-
         setupSiteErrorLog(app=None)
 
         startZServer(number_of_threads=1, log=None)

Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/doc/HOWTO.stx
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/doc/HOWTO.stx	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/doc/HOWTO.stx	2009-01-23 18:30:05 UTC (rev 94962)
@@ -106,8 +106,6 @@
 
           - **'setupCoreSessions'** creates the Zope sessioning objects in the test ZODB.
 
-          - **'setupZGlobals'** creates the ZGlobals BTree required by ZClasses.
-
           - **'setupSiteErrorLog'** creates the error_log object required by ZPublisher.
 
           - **'startZServer'** starts a ZServer thread on the local host. Use this if the

Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/utils.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/utils.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/utils.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -68,16 +68,6 @@
 
 
 @layer.appcall
-def setupZGlobals(app):
-    '''Sets up the ZGlobals BTree required by ZClasses.'''
-    root = app._p_jar.root()
-    if not root.has_key('ZGlobals'):
-        from BTrees.OOBTree import OOBTree
-        root['ZGlobals'] = OOBTree()
-        transaction.commit()
-
-
- at layer.appcall
 def setupSiteErrorLog(app):
     '''Sets up the error_log object required by ZPublisher.'''
     if not hasattr(app, 'error_log'):
@@ -158,7 +148,6 @@
 __all__ = [
     'setupCoreSessions',
     'setupSiteErrorLog',
-    'setupZGlobals',
     'startZServer',
     'importObjectFromFile',
     'appcall',

Modified: Zope/trunk/lib/python/ZPublisher/HTTPRequest.py
===================================================================
--- Zope/trunk/lib/python/ZPublisher/HTTPRequest.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/ZPublisher/HTTPRequest.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -1479,7 +1479,7 @@
     '''
 
     # Allow access to attributes such as headers and filename so
-    # that ZClass authors can use DTML to work with FileUploads.
+    # that protected code can use DTML to work with FileUploads.
     __allow_access_to_unprotected_subobjects__ = 1
 
     def __init__(self, aFieldStorage):

Modified: Zope/trunk/lib/python/Zope2/App/ClassFactory.py
===================================================================
--- Zope/trunk/lib/python/Zope2/App/ClassFactory.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Zope2/App/ClassFactory.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -18,12 +18,7 @@
                   _silly=('__doc__',), _globals={},
                   ):
     try:
-        if module[:1]=='*':
-            # ZCLass! Yee ha!
-            return jar.root()['ZGlobals'][module]
-        else:
-            m=__import__(module, _globals, _globals, _silly)
-
+        m=__import__(module, _globals, _globals, _silly)
         return getattr(m, name)
     except:
         return OFS.Uninstalled.Broken(jar, None, (module, name))

Modified: Zope/trunk/lib/python/Zope2/Startup/datatypes.py
===================================================================
--- Zope/trunk/lib/python/Zope2/Startup/datatypes.py	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Zope2/Startup/datatypes.py	2009-01-23 18:30:05 UTC (rev 94962)
@@ -317,7 +317,7 @@
 def simpleClassFactory(jar, module, name,
                        _silly=('__doc__',), _globals={},
                        ):
-    """Class factory without ZClass support.
+    """Class factory.
     """
     import OFS.Uninstalled
     try:
@@ -326,28 +326,6 @@
     except:
         return OFS.Uninstalled.Broken(jar, None, (module, name))
 
-def zopeClassFactory(jar, module, name,
-                     _silly=('__doc__',), _globals={},
-                     ):
-    """Class factory with ZClass support.
-    """
-    import OFS.Uninstalled
-    try:
-        if module[:1]=='*':
-            # ZCLass! Yee ha!
-            return jar.root()['ZGlobals'][module]
-        else:
-            m=__import__(module, _globals, _globals, _silly)
-
-        return getattr(m, name)
-    except:
-        return OFS.Uninstalled.Broken(jar, None, (module, name))
-
-# There used to be an "autoClassFactory" whose docstring read "If not the root
-# connection, use the class factory from the root database, otherwise use the
-# Zope class factory."  This no longer works with the implementation of
-# mounted databases, so we just use the zopeClassFactory as the default
-
 try:
     from zope.app.twisted.server import ServerFactory
     class TwistedServerFactory(ServerFactory):

Modified: Zope/trunk/lib/python/Zope2/Startup/zopeschema.xml
===================================================================
--- Zope/trunk/lib/python/Zope2/Startup/zopeschema.xml	2009-01-23 17:48:02 UTC (rev 94961)
+++ Zope/trunk/lib/python/Zope2/Startup/zopeschema.xml	2009-01-23 18:30:05 UTC (rev 94962)
@@ -234,7 +234,7 @@
     </key>
 
    <key name="class-factory" datatype=".importable_name"
-        default="Zope2.Startup.datatypes.zopeClassFactory">
+        default="Zope2.Startup.datatypes.simpleClassFactory">
       <description>
        Change the class factory function a database uses on a
        per-database basis to support different class factory policy.
@@ -244,7 +244,7 @@
 
     <key name="container-class" datatype="string">
       <description>
-       Change the contiainer class a (mounted) database uses on a
+       Change the container class a (mounted) database uses on a
        per-database basis to support a different container than a plain
        Folder. Use a Python dotted-path name to specify the container class.
       </description>



More information about the Zope-Checkins mailing list