Skip to content

Commit

Permalink
bug fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Ronald Krist committed Sep 12, 2024
1 parent 0256a9a commit 2a1aa80
Showing 1 changed file with 5 additions and 47 deletions.
52 changes: 5 additions & 47 deletions oarepo_runtime/records/systemfields/selectors.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,10 @@ def select(self, record):
ret = []
for select_element in selected:
if isinstance(self.projection, str):
result = select_element[self.projection]
if isinstance(select_element, dict) and self.projection in select_element:
result = select_element[self.projection]
else:
result = []
else:
result = self.projection(select_element)
if isinstance(result, list):
Expand Down Expand Up @@ -98,49 +101,4 @@ def getter(data, path: List):
yield from getter(data[path[0]], path[1:])
elif isinstance(data, list):
for item in data:
yield from getter(item, path)


"""
def separate_element_condition(element):
if "?" in element:
return element.split("?")
return element, None
def check(data, condition):
if condition:
key, value = condition.split("=")
return key in data and data[key] == value
else:
return True
def getter(data, path: List, condition=None):
# allows selection from list of dicts based on one of the dict's values
if len(path) == 0:
if isinstance(data, list):
for item in data:
if check(item, condition):
yield item
elif isinstance(data, dict):
if check(data, condition):
yield data
else:
yield data
elif isinstance(data, dict):
element, condition = separate_element_condition(path[0])
if element and element in data:
next = data[element]
if isinstance(next, list):
yield from getter(next, path[1:], condition)
elif isinstance(next, dict):
if check(data, condition):
yield from getter(next, path[1:], None)
elif isinstance(data, list):
for item in data:
if check(item, condition):
yield from getter(item, path)
"""
yield from getter(item, path)

0 comments on commit 2a1aa80

Please sign in to comment.