diff --git a/netbox/users/models.py b/netbox/users/models.py index c83de3f90..02356696f 100644 --- a/netbox/users/models.py +++ b/netbox/users/models.py @@ -49,7 +49,7 @@ class UserConfig(models.Model): # Iterate down the hierarchy, returning the default value if any invalid key is encountered for key in keys: - if type(d) is dict: + if type(d) is dict and key in d: d = d.get(key) else: return default diff --git a/netbox/users/tests/test_models.py b/netbox/users/tests/test_models.py index ec1a00326..0157d8fdd 100644 --- a/netbox/users/tests/test_models.py +++ b/netbox/users/tests/test_models.py @@ -45,6 +45,12 @@ class UserConfigTest(TestCase): self.assertIsNone(userconfig.get('b.foo.invalid')) self.assertIsNone(userconfig.get('b.foo.x.invalid')) + # Invalid values with a provided default should return the default + self.assertEqual(userconfig.get('invalid', 'DEFAULT'), 'DEFAULT') + self.assertEqual(userconfig.get('a.invalid', 'DEFAULT'), 'DEFAULT') + self.assertEqual(userconfig.get('b.foo.invalid', 'DEFAULT'), 'DEFAULT') + self.assertEqual(userconfig.get('b.foo.x.invalid', 'DEFAULT'), 'DEFAULT') + def test_all(self): userconfig = self.userconfig flattened_data = {