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