[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: