chrisf wrote:
RegisterClass is cool
But what if you don't want to register your product. When you create a product and add a ZobjectManager derived Zclass, all subsequent subclasses appear in the subobject menu but not the Products menu. I have a heap of classes. I do not want every class in the add Products menu. I do want them to be available to the top level container class. How do I do this from within python product code.
well, i'm just about having the same problem. i have a bunch of (report_part-)classes that i want to get registered in a class attribute of my report class and then dynamically (setattr) extend my report instance with attributes of report_part instances. as a starter, in <ZOPEROOT>/lib/python/App/ProductContext.py, registerClass is defined in class ProductContext. later, in lib/python/OFS/Application.py, with os.path all packet directories are traversed, looking for files __init__.py A ProductContext-Object is created like | context=ProductContext(productObject, app, product) and if the __init__.py file contains a method "initialize", it is called like | initmethod=pgetattr(product, 'initialize', None) | if initmethod is not None: | initmethod(context) but i'm still confused, mostly about when happens what, do i have to define my own registrar-object, if so, where etc., and, since my needs are less than zopes product registry, i could probably do with much less code. i look also into metapublisher, which also defines field classes and has a similar behaviour (field type classes are registered in MP). it also does with basically a traversal of the products subdirectories. any further hints welcomed ------------------------------------------------------------- Who's got only a hammer sees the world as a nail hans augustin (software developer) hans@beehive.de beehive elektronische medien GmbH http://www.beehive.de phone: +49 30 847-82 0 fax: +49 30 847-82 299