[Zope3-checkins] CVS: Zope3/src/zope/proxy/context - __init__.py:1.10
Jim Fulton
jim@zope.com
Fri, 23 May 2003 13:51:05 -0400
Update of /cvs-repository/Zope3/src/zope/proxy/context
In directory cvs.zope.org:/tmp/cvs-serv14396/src/zope/proxy/context
Modified Files:
__init__.py
Log Message:
Worked around a circular import problem.
=== Zope3/src/zope/proxy/context/__init__.py 1.9 => 1.10 ===
--- Zope3/src/zope/proxy/context/__init__.py:1.9 Sun May 18 14:06:45 2003
+++ Zope3/src/zope/proxy/context/__init__.py Fri May 23 13:51:05 2003
@@ -22,7 +22,7 @@
from zope.interface import moduleProvides
from zope.security.proxy import Proxy, getChecker, getObject
-from zope.proxy.context.wrapper import getobject, getdict
+from zope.proxy.context.wrapper import getobject, getdict, getdictcreate
from zope.proxy.context.wrapper import getcontext, getinnercontext
from zope.proxy.context.wrapper import getinnerwrapper, getbaseobject
from zope.proxy.context.wrapper import ContextDescriptor, ContextAware
@@ -48,6 +48,17 @@
else:
_ob = makeWrapper(_ob, _parent, kw)
+ if type(_ob) in wrapperTypes:
+ #print 'wrapped', _ob
+ if getcontext(_ob) == _parent:
+ dict = getdictcreate(_ob)
+ #print 'avoided rewrapping', dict, kw
+ dict.update(kw)
+ return _ob
+
+
+
+
return _ob
ContextWrapper = hookable(ContextWrapper)
@@ -79,10 +90,14 @@
def _contextWrapperChecker(ob):
return selectChecker(getobject(ob))
-def getWrapperData(_ob):
+def getWrapperData(_ob, create=False):
if type(_ob) is Proxy:
+ _orig = _ob
_ob = getObject(_ob)
- return getdict(_ob)
+ if create:
+ return getdictcreate(_ob)
+ else:
+ return getdict(_ob)
def getInnerWrapperData(_ob):
if type(_ob) is Proxy: