ソースを参照

Fix returning default for unknown userconfig key

Jeremy Stretch 5 年 前
コミット
dc9617c7aa
2 ファイル変更7 行追加1 行削除
  1. 1 1
      netbox/users/models.py
  2. 6 0
      netbox/users/tests/test_models.py

+ 1 - 1
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

+ 6 - 0
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 = {