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.
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users