improved subscribe
--HG--
branch : trunk
diff --git a/jinja2/sandbox.py b/jinja2/sandbox.py
index 4b9ac13..c041a06 100644
--- a/jinja2/sandbox.py
+++ b/jinja2/sandbox.py
@@ -118,14 +118,15 @@
def subscribe(self, obj, argument):
"""Subscribe an object from sandboxed code."""
is_unsafe = False
- try:
- value = getattr(obj, str(argument))
- except (AttributeError, UnicodeError):
- pass
- else:
- if self.is_safe_attribute(obj, argument, value):
- return value
- is_unsafe = True
+ if isinstance(argument, basestring):
+ try:
+ value = getattr(obj, str(argument))
+ except (AttributeError, UnicodeError):
+ pass
+ else:
+ if self.is_safe_attribute(obj, argument, value):
+ return value
+ is_unsafe = True
try:
return obj[argument]
except (TypeError, LookupError):