[Zope-dev] Python Base Classes, ZObjectManager, and Subobjects (fwd)

Ross Patterson rossp@ppc.ucsc.edu
Mon, 28 Jan 2002 10:06:31 -0800 (PST)


I'm transitioning a product from pure ZClasses to a hybrid product python base
classes and ZClasses.  So this is my first time working with python
products.

I'm trying to setup a python base class to provide a central place to
subclass ZObjectManager and CatalogAware that I can rebase later
without the ZClass hassle.  But when I try to create a ZClass in the
product and subclass to one of my python base classes, I don't get the
subobjects tab in my ZClass.

Clearly I'm missing somthing basic here, but I have scoured the docs
and mailing lists for a clue before coming here.  BTW, I did find this
post earlier that no one seemed to reply to, and below that are my
actual python files.

>From the quoted message I can see that I need to do something with the
_zclass_, propertysheets, and manage_options of my base class.  Is
this documented anywhere.  I just gave up on reading the code.

---quoted message---

I want to create a Python base class that inherits from the
ObjectManager and has the "Subobjects" tab in the ZClass management
screen.  Inheriting from OFS.ObjectManager.ObjectManager does not do
this - I need to inherit from ZClasses.ObjectManager.ObjectManager.

I still don't know how to have the Subobjects propertysheet thing
work.  I've tried the two ways I listed in my last email of doing
this, but I can't get it to work.

One way was:

class MyObjectManager(ZClasses.ObjectManager.ObjectManager):
    " .... "

class ZMyObjectManager:
    """Mix-in for Object Management
    """

    _zclass_=myObjectManager

    propertysheets=ZClasses.ObjectManager.ZObjectManagerPropertySheets()

    manage_options=(
        {'label': 'Subobjects', 'action'
:'propertysheets/subobjects/manage'},
)

and then register ZMyObjectManager as a base class in __init__.py.
The other way was:

class MyObjectManager(ZClasses.ObjectManager.ObjectManager):
    propertysheets=ZClasses.ObjectManager.ZObjectManagerPropertySheets()

    manage_options=(
        {'label': 'Subobjects', 'action'
:'propertysheets/subobjects/manage'},
)

and register that as the base class.  Neither of them work.

-- 
Itamar S.T.  itamars@ibm.net

---end quoted message---


#!/usr/bin/python
# __init__.py

from ZClasses import createZClassForBase

from PartBase import PartBase
from SitePartBase import SitePartBase
from ProjectPartBase import ProjectPartBase

def initialize( context ) :
	createZClassForBase( PartBase, globals(), 'ZCPPartBase' )
	createZClassForBase( SitePartBase, globals(), 'ZCPSitePartBase' )
	createZClassForBase( ProjectPartBase, globals(), 'ZCPProjectPartBase' )

#!/usr/bin/python
# PartBases.py

from ZClasses.ObjectManager import ZObjectManager
from Products.ZCatalog.CatalogAwareness import CatalogAware

class PartBases ( CatalogAware, ZObjectManager ) :
	"""
	Base Classes for all ZCP Parts
	"""

#!/usr/bin/python
# PartBase.py

from PartBases import PartBases

class PartBase ( PartBases ) :
	"""
	Base Class for ZCP Parts
	"""

#!/usr/bin/python
# Products/ZCapitalProjects/SitePartBases.py

from PartBases import PartBases

class SitePartBase ( PartBases ) :
	"""
	Base Class for ZCP Site Parts
	"""

#!/usr/bin/python
# Products/ZCapitalProjects/ProjectPartBases.py

from PartBases import PartBases

class ProjectPartBase ( PartBases ) :
	"""
	Base Class for ZCP Project Parts
	"""

-----------------------------------------------------------------
| Ross Patterson			rossp@cats.ucsc.edu	|
| Programmer/Analyst			(831)459-2792		|
| Physical Planning & Construction	Fax:(831)423-7436	|
| UC Santa Cruz				http:www2.ucsc.edu/ppc	|
-----------------------------------------------------------------