Coverage for api/templatetags/get_attr.py: 32%
13 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 06:14 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 06:14 +0000
1import re
3from django import template
6numeric_test = re.compile(r"^\d+$")
7register = template.Library()
10def get_attr(value, arg):
11 """Get an attribute of an object dynamically from a string name"""
13 if hasattr(value, str(arg)):
14 return getattr(value, arg)
15 elif hasattr(value, "has_key") and value.has_key(arg):
16 return value[arg]
17 elif numeric_test.match(str(arg)) and len(value) > int(arg):
18 return value[int(arg)]
19 else:
20 return None
23register.filter("get_attr", get_attr)