summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbottle.py2
-rwxr-xr-xtest/test_environ.py3
2 files changed, 4 insertions, 1 deletions
diff --git a/bottle.py b/bottle.py
index b8a79f1..fe32e63 100755
--- a/bottle.py
+++ b/bottle.py
@@ -1594,7 +1594,7 @@ class BaseRequest(object):
def __setattr__(self, name, value):
if name == 'environ': return object.__setattr__(self, name, value)
key = 'bottle.request.ext.%s' % name
- if key in self.environ:
+ if hasattr(self, name):
raise AttributeError("Attribute already defined: %s" % name)
self.environ[key] = value
diff --git a/test/test_environ.py b/test/test_environ.py
index 908b9d8..d367448 100755
--- a/test/test_environ.py
+++ b/test/test_environ.py
@@ -462,6 +462,9 @@ class TestRequest(unittest.TestCase):
# Attributes are read-only once set.
self.assertRaises(AttributeError, setattr, r, 'foo', 'x')
+ # Properties raise AttributeError.
+ self.assertRaises(AttributeError, setattr, r, 'body', 'x')
+
# Unknown attributes raise AttributeError.
self.assertRaises(AttributeError, getattr, r, 'somevalue')