[Checkins] SVN: zope.keyreference/trunk/ Add a quick hack to make old keyreferences available if zope.app.keyreference is gone after update.

Dan Korostelev nadako at gmail.com
Sat Jan 31 18:03:17 EST 2009


Log message for revision 95800:
  Add a quick hack to make old keyreferences available if zope.app.keyreference is gone after update.

Changed:
  U   zope.keyreference/trunk/CHANGES.txt
  U   zope.keyreference/trunk/src/zope/keyreference/persistent.py

-=-
Modified: zope.keyreference/trunk/CHANGES.txt
===================================================================
--- zope.keyreference/trunk/CHANGES.txt	2009-01-31 21:17:09 UTC (rev 95799)
+++ zope.keyreference/trunk/CHANGES.txt	2009-01-31 23:03:16 UTC (rev 95800)
@@ -5,7 +5,9 @@
 3.6.1 (unreleased)
 ------------------
 
-- ...
+- Load keyreferences, pickled by old zope.app.keyreference even
+  if its not installed anymore (so don't break if one updates a
+  project that don't directly depends on zope.app.keyreference). 
 
 3.6.0 (2009-01-31)
 ------------------

Modified: zope.keyreference/trunk/src/zope/keyreference/persistent.py
===================================================================
--- zope.keyreference/trunk/src/zope/keyreference/persistent.py	2009-01-31 21:17:09 UTC (rev 95799)
+++ zope.keyreference/trunk/src/zope/keyreference/persistent.py	2009-01-31 23:03:16 UTC (rev 95800)
@@ -113,3 +113,17 @@
         if cur is None:
             return None
     return cur._p_jar
+
+# BBB: If zope.app.keyreference is not installed, we still want
+# old key references to be available. So fake a module to make
+# them unpickleable.
+try:
+    import zope.app.keyreference
+except ImportError:
+    import sys
+    from types import ModuleType as module
+    z_a_k = module('zope.app.keyreference')
+    sys.modules['zope.app.keyreference'] = z_a_k
+    z_a_k_p = module('zope.app.keyreference.persistent')
+    z_a_k_p.KeyReferenceToPersistent = KeyReferenceToPersistent
+    sys.modules['zope.app.keyreference.persistent'] = z_a_k_p



More information about the Checkins mailing list