[Zope] local and global site manager, adapter and utility questions

Tamer Higazi th982a at googlemail.com
Sun Jun 9 15:30:26 UTC 2013


Hi Thierry!
Thanks for your lat response, meanwhile things are getting more and more
clear to me.


I got it meanwhile to register utilities through the globalSiteManager,
and I am now very familiar now with zca basics (though that I have much
more to learn of it's API)

There is something totally unclear to me!


I got 2 applications registered in the
"/storage/PyProjects/ztfyAPP/etc/configure.zcml"

tamer at office /storage/PyProjects/ztfyAPP/src $ ls -lA
insgesamt 16
drwxr-xr-x 2 tamer tamer 4096  9. Jun 07:40 appsx
drwxr-xr-x 2 tamer tamer 4096 20. Mai 16:13 appsx.egg-info
drwxr-xr-x 4 tamer tamer 4096  9. Jun 07:43 webapp
drwxr-xr-x 2 tamer tamer 4096 20. Mai 02:35 webapp.egg-info


that is "webapp" and "appsx"

so far so good.

At /storage/PyProjects/ztfyAPP/src/appsx/__init__.py:

I globally registered a class, which definied previously as a utility.


from Services import *
from zope.component import getGlobalSiteManager
from zope.component import getUtilitiesFor,queryUtility

gsmx = getGlobalSiteManager()

VAT = VATServices()
gsmx.registerUtility(VAT,IVATServices,'VAT')



now I want to have access this utility in the global sitemanager from
one other app.

/storage/PyProjects/ztfyAPP/src/webapp/__init__.py:

from myhello import HelloView
from zope.component import getGlobalSiteManager

#print list(getUtilitiesFor('IVatServices'))

gsmx2 = getGlobalSiteManager()
gsmx2.queryUtility(IVATServices,'VAT').Hallo()


I thought it is in the memory. Okay, that the interface is not available
in the other application is clear.


But, how do I access components or utilities registered in a different
application globally, at one other application at all ?!



Tamer


Am 14.05.2013 09:22, schrieb Thierry Florac:
> 
> Hi,
> 
> Le Tue, 14 May 2013 06:55:38 +0200,
>   Tamer Higazi <th982a at googlemail.com> a écrit:
> 
>> 1. What is the difference between a global and a localSiteManager from
>> the zope.component package?!
>>
>> How do I have to understand that a "globalSiteManager" resists in
>> memory, and a localSiteManager is persistent ?!
>>
>> Could somebody of you explain it to me?!
> 
> Yes, there are two kinds of complementary "registries" (or "site
> managers"):
>  - a global one, mainly build by ZCML (or "static") declarations
>  - a local one, which is made of persistent components registered into
>    the ZODB. Local components are "contextual", so are only available
>    (by default) to objects "attached" to the site manager inside which
>    these components are defined. This registry is mainly specific to
>    Zope applications so if you build a ZCA-based application outside of
>    Zope, you will probably don't have a local registry.
> 
> Where you are looking for a component, search is made at first in the
> local registry, then in the global one.
> 
> 
>> 2. What is the difference between an adapter and a utility ?! I
>> register an adapter as well the same way as I do with a utility, and
>> I query those 2 as well. But what's the point there?!
> 
> A utility is a simple named component which provides an interface;
> it's generally a singleton.
> An adapter, on the opposite, takes one or more objects arguments (each
> providing a given interface) to return an object providing another
> interface.
> 
> Regards,
> Thierry
> 
> P.S.: please avoid cross-posts!
> 



More information about the Zope mailing list