[Zope3-Users] Can't make site of a BTreeContainer
Thierry FLORAC
tflorac at ulthar.net
Sat Mar 11 10:59:14 EST 2006
Hi,
I'm currently building a photo management application for which I need
to setup local utilities (a catalog...), so I want to make a site of my
main folder, which is called a gallery.
My current problem is that I can't define the folder as a site manager
if it is subclassed from BTreeContainer ; the same code that follows
works perfectly if my Gallery class just inherits from Folder.
Here is the main structure of my code, mainly extracted from the "cubic"
portal :
class IGalleryContainer (IContainer):
"""Marker interface"""
class IGalleryFolder (IGalleryContainer):
"""Photo management folder"""
def __setitem__ (name, object):
"""Add a new sub-folder"""
__setitem__.precondition = ItemTypePrecondition(IGalleryContainer,IGalleryPhoto)
class IGallery (IGalleryFolder):
"""Marker interface"""
class GalleryFolder (BTreeContainer):
"""Photo management folder"""
implements (IGalleryFolder)
class Gallery (GalleryFolder, SiteManagerContainer):
"""Main gallery site"""
implements (IGallery)
def setupSiteManager(self):
"""Setup a sitemanager and related utilities
Invoked through the setupGallery handler
"""
self.setSiteManager(LocalSiteManager(self))
setSite(self)
default = self.getSiteManager()['default']
reg_manager = default.registrationManager
if 'intid' not in default:
intids = IntIds()
default['intid'] = intids
intids_reg = UtilityRegistration('', IIntIds, intids)
reg_manager.addRegistration(intids_reg)
intids_reg.status = ActiveStatus
if 'catalog' not in default:
catalog = Catalog()
default['catalog'] = catalog
catalog_reg = UtilityRegistration('catalog', ICatalog, catalog)
reg_manager.addRegistration(catalog_reg)
catalog_reg.status = ActiveStatus
catalog = default['catalog']
index = SetIndex(field_name='getPathElements', interface=IPathElements, field_callable=True)
catalog['path'] = index
...
In fact, at the end of the "setupSiteManager" method, which is called
through an event subscriber, "zapi.getPath(default)" returns the correct
path (/mygallery/++etc++site/default) and the gallery folder is
correctly marked as being a site in introspector. No exception is raised
while setting the site, but any try to follow the "Site management" link
returns an error, and the ++etc++site "sub-folder" seems to be
vanished !
The same problem appears if I don't call the "setupSiteManager" and try
to create the site through the "Make a site" link.
Thanks for any help,
Thierry
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
More information about the Zope3-users
mailing list