[Zope3-dev] Re: Re: help with directlyProvides

luis lparrab at gmx.net
Sun May 7 18:24:42 EDT 2006


Jean-Marc Orliaguet wrote:

> luis wrote:
> 
> are you sure? I tried with:
> 
> jmo at localhost ~/Zope3/src $ python2.4
> Python 2.4.2 (#1, Dec  4 2005, 15:28:38)
> Type "help", "copyright", "credits" or "license" for more information.
>  >>> from zope.app.file import file
>  >>> f = file.File()
>  >>> f
> <zope.app.file.file.File object at 0xb7cbad2c>
>  >>> import zope.interface
>  >>> class IMarker(zope.interface.Interface):
> ...          """Marker interface"""
> ...
>  >>> zope.interface.directlyProvides(f, IMarker)
>  >>> list(zope.interface.directlyProvidedBy(f))
> [<InterfaceClass __main__.IMarker>]
>  >>> IMarker.providedBy(f)
> True

yes.. that's why I say that it seems very strange... the call to
directlyProvides works as you show with your example, ... *but*, after you
add your file to a folder, something removes the IMarker interface (or it
doesn't get saved for some reason )

directlyProvides( f, IMarker )
if not IMarker.providedBy( f ):
        raise Error
myfolder['f'] = f

if you put something like that in an Adding-Form, no exception is raised and
the object "f" is added to the container. so the directlyProvides does
work...but then, if you take a look at the object "f" in the zmi
introspector, you will see something like:
        
        DirectlyProvided interfaces
                <nothing>

so what I'm saying is not that directlyProvides doesnt work, but that
provided-list gets lost somewhere on the way into the database... (but if f
is  a Folder, then the provided-list is kept )

luis




More information about the Zope3-dev mailing list