Skip to content

Commit

Permalink
include all ICAT relations of non-related fields when querying ICAT #265
Browse files Browse the repository at this point in the history
  • Loading branch information
VKTB committed Jan 24, 2022
1 parent 516a9e2 commit 27866f9
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions datagateway_api/src/search_api/helpers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import logging

from datagateway_api.src.datagateway_api.filter_order_handler import FilterOrderHandler
from datagateway_api.src.datagateway_api.icat.filters import PythonICATIncludeFilter
from datagateway_api.src.search_api.filters import SearchAPIIncludeFilter
from datagateway_api.src.search_api.panosc_mappings import mappings
from datagateway_api.src.search_api.query import SearchAPIQuery
from datagateway_api.src.search_api.session_handler import (
client_manager,
Expand All @@ -15,6 +18,25 @@
def get_search(endpoint_name, entity_name, filters):
log.debug("Entity Name: %s, Filters: %s", entity_name, filters)

icat_relations = mappings.get_icat_relations_for_panosc_non_related_fields(
entity_name,
)

for filter_ in filters:
if isinstance(filter_, SearchAPIIncludeFilter):
included_filters = filter_.included_filters
for included_filter in included_filters:
icat_relations.extend(
mappings.get_icat_relations_for_non_related_fields_of_panosc_relation( # noqa: B950
entity_name, included_filter,
),
)

# Remove any duplicate ICAT relations
icat_relations = list(dict.fromkeys(icat_relations))
if icat_relations:
filters.append(PythonICATIncludeFilter(icat_relations))

query = SearchAPIQuery(entity_name)

filter_handler = FilterOrderHandler()
Expand Down

0 comments on commit 27866f9

Please sign in to comment.