[Checkins] SVN: grok/trunk/src/grok/meta.py turn subscriber into a function since it's completely stateless anyway

Philipp von Weitershausen philikon at philikon.de
Sun Jan 7 11:53:44 EST 2007


Log message for revision 71779:
  turn subscriber into a function since it's completely stateless anyway
  

Changed:
  U   grok/trunk/src/grok/meta.py

-=-
Modified: grok/trunk/src/grok/meta.py
===================================================================
--- grok/trunk/src/grok/meta.py	2007-01-07 16:40:25 UTC (rev 71778)
+++ grok/trunk/src/grok/meta.py	2007-01-07 16:53:43 UTC (rev 71779)
@@ -338,50 +338,45 @@
 
         # store infos on site class
         factory.__grok_utilities_to_install__ = infos
-        subscriber = LocalUtilityRegistrationSubscriber()
-        component.provideHandler(subscriber,
+        component.provideHandler(localUtilityRegistrationSubscriber,
                                  adapts=(factory, grok.IObjectAddedEvent))
 
-class LocalUtilityRegistrationSubscriber(object):
+def localUtilityRegistrationSubscriber(site, event):
     """A subscriber that fires to set up local utilities.
-    
-    This class is deliberately stateless. This means that there
-    can be no instance variables.
     """
-    def __call__(self, site, event):
-        installed = getattr(site, '__grok_utilities_installed__', False)
-        if installed:
-            return
-    
-        for info in util.class_annotation(site.__class__,
-                                          'grok.utilities_to_install', []):
-            utility = info.factory()
-            site_manager = site.getSiteManager()
-            
-            # store utility
-            if not info.public:
-                container = site_manager['default']
-            else:
-                container = site
-                
-            name_in_container = info.name_in_container 
-            if name_in_container is None:
-                name_in_container = INameChooser(container).chooseName(
-                    info.factory.__class__.__name__,
-                    utility)
-            container[name_in_container] = utility
+    installed = getattr(site, '__grok_utilities_installed__', False)
+    if installed:
+        return
 
-            # execute setup callback
-            if info.setup is not None:
-                info.setup(utility)
+    for info in util.class_annotation(site.__class__,
+                                      'grok.utilities_to_install', []):
+        utility = info.factory()
+        site_manager = site.getSiteManager()
 
-            # register utility
-            site_manager.registerUtility(utility, provided=info.provides,
-                                         name=info.name)
+        # store utility
+        if not info.public:
+            container = site_manager['default']
+        else:
+            container = site
 
-        # we are done. If this subscriber gets fired again, we therefore
-        # do not register utilities anymore
-        site.__grok_utilities_installed__ = True
+        name_in_container = info.name_in_container 
+        if name_in_container is None:
+            name_in_container = INameChooser(container).chooseName(
+                info.factory.__class__.__name__,
+                utility)
+        container[name_in_container] = utility
+
+        # execute setup callback
+        if info.setup is not None:
+            info.setup(utility)
+
+        # register utility
+        site_manager.registerUtility(utility, provided=info.provides,
+                                     name=info.name)
+
+    # we are done. If this subscriber gets fired again, we therefore
+    # do not register utilities anymore
+    site.__grok_utilities_installed__ = True
         
 class DefinePermissionGrokker(grok.ModuleGrokker):
 



More information about the Checkins mailing list