summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hellkamp <marc@gsites.de>2012-06-04 18:01:02 +0200
committerMarcel Hellkamp <marc@gsites.de>2012-06-04 18:02:00 +0200
commitfba90b086285710f9a86b5d9836c7f03d521f73a (patch)
treeb77d845e54dc1ac98dc63518226d5c1578d31439
parent5f2afb5d38ec0d18732279abae13ca544b72eb2d (diff)
downloadbottle-fba90b086285710f9a86b5d9836c7f03d521f73a.tar.gz
fix: Accessing the uninitialized request/response objects now yields a useful error message.
-rw-r--r--bottle.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/bottle.py b/bottle.py
index fbc19a2..27cd41c 100644
--- a/bottle.py
+++ b/bottle.py
@@ -1493,10 +1493,16 @@ class BaseResponse(object):
_lctx = threading.local()
def local_property(name):
- return property(lambda self: getattr(_lctx, name),
- lambda self, value: setattr(_lctx, name, value),
- lambda self: delattr(_lctx, name),
- 'Thread-local property stored in :data:`_lctx.%s`' % name)
+ def fget(self):
+ try:
+ return getattr(_lctx, name)
+ except AttributeError:
+ raise RuntimeError("Request context not initialized.")
+ def fset(self, value): setattr(_lctx, name, value)
+ def fdel(self): delattr(_lctx, name)
+ return property(fget, fset, fdel,
+ 'Thread-local property stored in :data:`_lctx.%s`' % name)
+
class LocalRequest(BaseRequest):
''' A thread-local subclass of :class:`BaseRequest` with a different