[Checkins] SVN: z3c.caching/trunk/src/z3c/caching/registry.py Move adapter factory factory to a module-level closure, rather than hidden away in the register function
Matthew Wilkes
matthew at matthewwilkes.co.uk
Mon Dec 28 13:16:48 EST 2009
Log message for revision 107224:
Move adapter factory factory to a module-level closure, rather than hidden away in the register function
Changed:
U z3c.caching/trunk/src/z3c/caching/registry.py
-=-
Modified: z3c.caching/trunk/src/z3c/caching/registry.py
===================================================================
--- z3c.caching/trunk/src/z3c/caching/registry.py 2009-12-28 18:08:08 UTC (rev 107223)
+++ z3c.caching/trunk/src/z3c/caching/registry.py 2009-12-28 18:16:47 UTC (rev 107224)
@@ -20,6 +20,13 @@
def __init__(self, identifier):
self.id = identifier
+def get_context_to_cacherule_adapter_factory(rule):
+ """Given a cache rule return an adapter factory which expects an object
+ but only returns the pre-specified cache rule."""
+ def CacheRuleFactory(context):
+ return CacheRule(rule)
+ return CacheRuleFactory
+
class RulesetRegistry(object):
implements(IRulesetRegistry)
@@ -29,7 +36,7 @@
self.registry = registry
def register(self, obj, rule):
- factory = lambda context: CacheRule(rule)
+ factory = get_context_to_cacherule_adapter_factory(rule)
existing = self.directLookup(obj)
if existing is None:
# Only register if we haven't got thisw one already
@@ -66,7 +73,7 @@
"""Find a rule _directly_ assigned to `obj`"""
for rule in self.registry.registeredAdapters():
if rule.provided != ICacheRule:
- pass
+ continue
if rule.required == (obj, ):
return rule.factory(None).id
return None
More information about the checkins
mailing list