[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