From d86305e83e50dc5977fbe0d09624b65ffd92ec09 Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Wed, 20 Nov 2019 20:53:53 +0100 Subject: [PATCH] Make get_dict do the full access discovery like the normal access operator. --- biscuit/core/templatetags/data_helpers.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/biscuit/core/templatetags/data_helpers.py b/biscuit/core/templatetags/data_helpers.py index 342ff5cea..5267472ba 100644 --- a/biscuit/core/templatetags/data_helpers.py +++ b/biscuit/core/templatetags/data_helpers.py @@ -6,5 +6,14 @@ register = template.Library() @register.filter -def get_dict(value: Dict[Any, Any], arg: Any) -> Any: - return value.get(arg, None) +def get_dict(value: Any, arg: Any) -> Any: + """Gets an attribute of an object dynamically from a string name""" + + if hasattr(value, str(arg)): + return getattr(value, arg) + elif hasattr(value, 'has_key') and value.has_key(arg): + return value[arg] + elif str(arg).isnumeric() and len(value) > int(arg): + return value[int(arg)] + else: + return None -- GitLab