diff options
author | Marcel Hellkamp <marc@gsites.de> | 2012-06-04 18:01:02 +0200 |
---|---|---|
committer | Marcel Hellkamp <marc@gsites.de> | 2012-06-04 18:02:00 +0200 |
commit | fba90b086285710f9a86b5d9836c7f03d521f73a (patch) | |
tree | b77d845e54dc1ac98dc63518226d5c1578d31439 | |
parent | 5f2afb5d38ec0d18732279abae13ca544b72eb2d (diff) | |
download | bottle-fba90b086285710f9a86b5d9836c7f03d521f73a.tar.gz |
fix: Accessing the uninitialized request/response objects now yields a useful error message.
-rw-r--r-- | bottle.py | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -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 |