summaryrefslogtreecommitdiff
path: root/repoze/bfg/decorator.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-12-17 01:17:48 +0000
committerChris McDonough <chrism@agendaless.com>2009-12-17 01:17:48 +0000
commit5babbaf48a71af786d41f59a1f1f7d5272a60a4d (patch)
tree4c3c4264e73410db07baffaebd879b36c4ae5aed /repoze/bfg/decorator.py
parent0bf2866211d095a18a5c61d7af644c8e17486e6e (diff)
downloadpyramid-5babbaf48a71af786d41f59a1f1f7d5272a60a4d.tar.gz
pyramid-5babbaf48a71af786d41f59a1f1f7d5272a60a4d.tar.bz2
pyramid-5babbaf48a71af786d41f59a1f1f7d5272a60a4d.zip
- When Chameleon page or text templates were added imperatively (via
``Configurator.add_view`` or some derivative), they too-eagerly attempted to look up the ``reload_templates`` setting via ``get_settings``, meaning they were always registered in non-auto-reload-mode (the default). Each now waits until its respective ``template`` attribute is accessed to look up the value.
Diffstat (limited to 'repoze/bfg/decorator.py')
-rw-r--r--repoze/bfg/decorator.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/repoze/bfg/decorator.py b/repoze/bfg/decorator.py
new file mode 100644
index 000000000..69c1e65e2
--- /dev/null
+++ b/repoze/bfg/decorator.py
@@ -0,0 +1,15 @@
+class reify(object):
+
+ """ Put the result of a method which uses this (non-data)
+ descriptor decorator in the instance dict after the first call,
+ effectively replacing the decorator with an instance variable."""
+
+ def __init__(self, wrapped):
+ self.wrapped = wrapped
+
+ def __get__(self, inst, objtype=None):
+ if inst is None:
+ return self
+ val = self.wrapped(inst)
+ setattr(inst, self.wrapped.__name__, val)
+ return val