Skip to content

Commit

Permalink
Merge branch 'master' into collection_expansions
Browse files Browse the repository at this point in the history
  • Loading branch information
snyaggarwal committed Jan 18, 2022
2 parents aa5c149 + 826b66f commit c705bab
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 2 deletions.
2 changes: 1 addition & 1 deletion core/__init__.py
@@ -1,4 +1,4 @@
API_VERSION = '2.0.111'
API_VERSION = '2.0.112'
API_BUILD = 'dev'
VERSION = API_VERSION + '-' + API_BUILD
__version__ = VERSION
19 changes: 18 additions & 1 deletion core/common/tests.py
Expand Up @@ -22,7 +22,7 @@
to_camel_case,
drop_version, is_versioned_uri, separate_version, to_parent_uri, jsonify_safe, es_get,
get_resource_class_from_resource_name, flatten_dict, is_csv_file, is_url_encoded_string, to_parent_uri_from_kwargs,
set_current_user, get_current_user, set_request_url, get_request_url)
set_current_user, get_current_user, set_request_url, get_request_url, nested_dict_values)
from core.concepts.models import Concept, LocalizedText
from core.mappings.models import Mapping
from core.orgs.models import Organization
Expand Down Expand Up @@ -743,6 +743,23 @@ def test_to_parent_uri_from_kwargs(self):
self.assertIsNone(to_parent_uri_from_kwargs({}))
self.assertIsNone(to_parent_uri_from_kwargs(None))

def test_nested_dict_values(self):
self.assertEqual(list(nested_dict_values({})), [])
self.assertEqual(list(nested_dict_values(dict(a=1))), [1])
self.assertEqual(list(nested_dict_values(dict(a=1, b='foobar'))), [1, 'foobar'])
self.assertEqual(
list(nested_dict_values(dict(a=1, b='foobar', c=dict(a=1, b='foobar')))),
[1, 'foobar', 1, 'foobar']
)
self.assertEqual(
list(
nested_dict_values(
dict(a=1, b='foobar', c=dict(a=1, b='foobar', c=dict(d=[dict(a=1), dict(b='foobar')])))
)
),
[1, 'foobar', 1, 'foobar', [{'a': 1}, {'b': 'foobar'}]]
)


class BaseModelTest(OCLTestCase):
def test_model_name(self):
Expand Down
8 changes: 8 additions & 0 deletions core/common/utils.py
Expand Up @@ -719,3 +719,11 @@ def named_tuple_fetchall(cursor):
desc = cursor.description
nt_result = namedtuple('Result', [col[0] for col in desc])
return [nt_result(*row) for row in cursor.fetchall()]


def nested_dict_values(_dict):
for value in _dict.values():
if isinstance(value, dict):
yield from nested_dict_values(value)
else:
yield value

0 comments on commit c705bab

Please sign in to comment.