[Checkins] SVN: zope.file/trunk/src/zope/file/ Subscribers to modified events expect unproxied objects. (this is particularly important for savepoints + zc.catalog deferred cataloging, which can try to pickle security proxies in the queue during a savepoint)

Gary Poster gary at zope.com
Sat Sep 2 16:45:10 EDT 2006


Log message for revision 69938:
  Subscribers to modified events expect unproxied objects.  (this is particularly important for savepoints + zc.catalog deferred cataloging, which can try to pickle security proxies in the queue during a savepoint)
  

Changed:
  U   zope.file/trunk/src/zope/file/contenttype.py
  U   zope.file/trunk/src/zope/file/upload.py

-=-
Modified: zope.file/trunk/src/zope/file/contenttype.py
===================================================================
--- zope.file/trunk/src/zope/file/contenttype.py	2006-09-02 16:04:48 UTC (rev 69937)
+++ zope.file/trunk/src/zope/file/contenttype.py	2006-09-02 20:45:09 UTC (rev 69938)
@@ -22,6 +22,7 @@
 import zope.mimetype.interfaces
 import zope.mimetype.source
 import zope.schema
+import zope.security.proxy
 
 from zope import mimetype
 from zope.file.i18n import _
@@ -172,4 +173,5 @@
                     parameters["charset"] = new_charset.name
                     context.parameters = parameters
         zope.event.notify(
-            zope.lifecycleevent.ObjectModifiedEvent(context))
+            zope.lifecycleevent.ObjectModifiedEvent(
+                zope.security.proxy.removeSecurityProxy(context)))

Modified: zope.file/trunk/src/zope/file/upload.py
===================================================================
--- zope.file/trunk/src/zope/file/upload.py	2006-09-02 16:04:48 UTC (rev 69937)
+++ zope.file/trunk/src/zope/file/upload.py	2006-09-02 20:45:09 UTC (rev 69938)
@@ -126,8 +126,10 @@
                 parameters = dict(context.parameters)
                 parameters["charset"] = new_charset.name
                 context.parameters = parameters
+        # these subscribers generally expect an unproxied object.
         zope.event.notify(
-            zope.lifecycleevent.ObjectModifiedEvent(context))
+            zope.lifecycleevent.ObjectModifiedEvent(
+                zope.security.proxy.removeSecurityProxy(context)))
 
 
 def updateBlob(ob, input):



More information about the Checkins mailing list