[Zope3-Users] Re: Get classes implementing Interface

Jim Fulton jim at zope.com
Fri Dec 30 11:45:54 EST 2005


Philipp von Weitershausen wrote:
> Florian Lindner wrote:
> 
>>my first use case is that I want to enhance the HomefolderManager to make it 
>>possible to select something else than a Folder to be created automatically. 
>>Right now I have forked a version of the HomefolderManager and just changed 
>>in the code. But I would like to have a more generic solution and I'll also 
>>commit it back to the trunk.
>>For that I want all classes implementing IContainer (and IContentType ?) and 
>>let the user select on in the configuration dialog of the HomefolderManager.
>>More use caess probably show up in my project later, but nothing fixed at this 
>>time.
> 
> 
> So what you want is to create objects. Classes are just an
> implementation detail to creating objects :). Factories create objects,
> whether they're from a class is immaterial.
> 
> So, what you want is not a list of classes but a list of factories that
> can create IContainers. This is possible by using
> zapi.getUtilitiesFor(IFactory) and then checking each factory's
> getInterfaces() method whether IContainer is a part of the returned
> result. I would probably base an implementation of all on the
> UtilityVocabulary.

I'll also note that the use case is also directly addressed through
containment constraints.  You can say that a container
should only contain objects of some given types and you will get
just those types in the add list.

Jim

-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org


More information about the Zope3-users mailing list