[z3-checkins] r22055 - z3/Five/trunk/site

regebro at codespeak.net regebro at codespeak.net
Thu Jan 12 18:32:07 CET 2006


Author: regebro
Date: Thu Jan 12 18:32:06 2006
New Revision: 22055

Modified:
   z3/Five/trunk/site/metaconfigure.py
Log:
Added a warning if a class got a local site hook twice.


Modified: z3/Five/trunk/site/metaconfigure.py
==============================================================================
--- z3/Five/trunk/site/metaconfigure.py	(original)
+++ z3/Five/trunk/site/metaconfigure.py	Thu Jan 12 18:32:06 2006
@@ -25,13 +25,17 @@
 
 from Products.Five.site.localsite import FiveSite
 
+from zLOG import LOG, WARNING
+
 _localsite_monkies = []
 def classSiteHook(class_, site_class):
-    setattr(class_, 'getSiteManager',
-            site_class.getSiteManager.im_func)
-    setattr(class_, 'setSiteManager',
-            site_class.setSiteManager.im_func)
-    _localsite_monkies.append(class_)
+    if class_ in _localsite_monkies:
+        LOG('Five', WARNING, "Class %s already has a site hook" % class_)        
+    else:
+        _localsite_monkies.append(class_)
+    setattr(class_, 'getSiteManager', site_class.getSiteManager.im_func)
+    setattr(class_, 'setSiteManager', site_class.setSiteManager.im_func)
+    
 
 def installSiteHook(_context, class_, site_class=None):
     if site_class is None:
@@ -59,10 +63,10 @@
 
 def uninstallSiteHooks():
     for class_ in _localsite_monkies:
+        _localsite_monkies.remove(class_)
         delattr(class_, 'getSiteManager')
         delattr(class_, 'setSiteManager')
         classImplementsOnly(class_, implementedBy(class_)-IPossibleSite)
-        _localsite_monkies.remove(class_)
 
 from zope.testing.cleanup import addCleanUp
 addCleanUp(uninstallSiteHooks)


More information about the z3-checkins mailing list