bug(descriptor): missing fields in stored descriptors. 1408, 1388
[osm/NBI.git] / osm_nbi / utils.py
index bb9e33e..aac3d90 100644 (file)
@@ -37,3 +37,22 @@ def find_index_in_list(the_list, condition_lambda):
             return index
     else:
         return -1
+
+
+def deep_update_dict(data, updated_data):
+    if isinstance(data, list):
+        processed_items_data = []
+        for index, item in enumerate(data):
+            processed_items_data.append(deep_update_dict(item, updated_data[index]))
+        return processed_items_data
+
+    if isinstance(data, dict):
+        for key in data.keys():
+            if key in updated_data:
+                if not isinstance(data[key], dict) and not isinstance(data[key], list):
+                    data[key] = updated_data[key]
+                else:
+                    data[key] = deep_update_dict(data[key], updated_data[key])
+        return data
+
+    return data