[Zope-Checkins] CVS: Zope3/lib/python/Zope/ComponentArchitecture - ViewService.py:1.1.2.1 __init__.py:1.1.6.9 hooks.py:1.1.2.12 metaConfigure.py:1.1.2.9
Jim Fulton
jim@zope.com
Sun, 6 Jan 2002 18:43:42 -0500
Update of /cvs-repository/Zope3/lib/python/Zope/ComponentArchitecture
In directory cvs.zope.org:/tmp/cvs-serv9153
Modified Files:
Tag: Zope-3x-branch
__init__.py hooks.py metaConfigure.py
Added Files:
Tag: Zope-3x-branch
ViewService.py
Log Message:
Separated ViewService implementation into separate module and added
skin support.
=== Added File Zope3/lib/python/Zope/ComponentArchitecture/ViewService.py ===
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
#
##############################################################################
"""
Revision information: $Id: ViewService.py,v 1.1.2.1 2002/01/06 23:43:42 jim Exp $
"""
from IToIRegistry import IToIRegistry
from Exceptions import ComponentLookupError
class ViewService:
def __init__(self):
self.__skins = {'': ('',)}
self.__layers = {}
# Implementation methods for interface
# Zope.ComponentArchitecture.IViewService.
def getView(self, object, name, type, default=None, skin=''):
'''See interface IViewService'''
for layername in self.__skins.get(skin, ()):
layer = self.__layers.get(layername)
if not layer: continue
reg = layer.get(name, None)
if reg is None: continue
c = reg.getForObject(object, type)
if c is None: continue
return c(object)
if default is None:
raise ComponentLookupError(object, name, type)
return default
def provideView(self, forInterface, name, type, maker, layer=''):
'''See interface IViewService'''
views = self.__layers.get(layer)
if views is None:
views = self.__layers[layer] = {}
reg = views.get(name, None)
if reg is None:
reg = views[name] = IToIRegistry()
reg.register(forInterface, type, maker)
def defineSkin(self, skin, layers):
'''See interface IViewService'''
self.__skins[skin] = layers
def _clear(self):
self.__init__()
viewService = ViewService()
getView = viewService.getView
provideView = viewService.provideView
defineSkin = viewService.defineSkin
_clear = viewService._clear
=== Zope3/lib/python/Zope/ComponentArchitecture/__init__.py 1.1.6.8 => 1.1.6.9 ===
# FOR A PARTICULAR PURPOSE.
+from IComponentArchitecture import IComponentArchitecture
+
+
from hooks import provideAdapter, getAdapter
from hooks import provideUtility, getUtility
-from hooks import provideView, getView
from hooks import provideFactory, createObject
from Service import defineService, provideService, getService
+from ViewService import getView, provideView, defineSkin
def _clear():
- from hooks import _clear
- _clear()
- from Service import _clear
- _clear()
+ from hooks import _clear; _clear()
+ from Service import _clear; _clear()
+ from ViewService import _clear; _clear()
+
+__implements__ = IComponentArchitecture
=== Zope3/lib/python/Zope/ComponentArchitecture/hooks.py 1.1.2.11 => 1.1.2.12 ===
return r
-
def provideUtility(providedInterface, component):
return provideUtility_hook(providedInterface, component)
@@ -28,14 +27,6 @@
if r is _marker: raise ComponentLookupError(object, interface)
return r
-def provideView(forInterface, name, type, maker):
- return provideView_hook(forInterface, name, type, maker)
-
-def getView(object, name, type, default=_marker):
- r = getView_hook(object, name, type, default)
- if r is _marker: raise ComponentLookupError(object, name, type)
- return r
-
def provideFactory(qname, factory):
return provideFactory_hook(qname, factory)
@@ -63,20 +54,6 @@
if c is None: return default
return c
-def provideView_hook(forInterface, name, type, maker):
- reg = _views.get(name, None)
- if reg is None:
- reg=IToIRegistry()
- _views[name]=reg
- reg.register(forInterface, type, maker)
-
-def getView_hook(object, name, type, default=None):
- reg = _views.get(name, None)
- if reg is None: return default
- c = reg.getForObject(object, type)
- if c is None: return default
- return c(object)
-
from Interface.verify import verify as _verify
from Zope.ComponentArchitecture.IFactory import IFactory as _IFactory
@@ -92,10 +69,9 @@
return factory()
def _clear():
- global _adapters, _utilities, _views, _factories
+ global _adapters, _utilities, _factories
_adapters = IToIRegistry()
_utilities = IRegistry()
- _views = {}
_factories = {}
_clear()
=== Zope3/lib/python/Zope/ComponentArchitecture/metaConfigure.py 1.1.2.8 => 1.1.2.9 ===
# FOR A PARTICULAR PURPOSE.
-from hooks import provideAdapter, provideUtility, provideView
+from hooks import provideAdapter, provideUtility
+from ViewService import provideView
from Zope.Configuration.name import resolve
from Zope.Configuration import namespace
from Service import defineService, provideService