From e28c39b61ce6d2bbc02834e510b70290b7605659 Mon Sep 17 00:00:00 2001 From: Matthew Richards Date: Wed, 14 Oct 2020 13:09:44 +0000 Subject: [PATCH] #146: Implement second ISIS specific endpoint --- common/icat/helpers.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/common/icat/helpers.py b/common/icat/helpers.py index e6fb5edb..76e32ee3 100644 --- a/common/icat/helpers.py +++ b/common/icat/helpers.py @@ -563,6 +563,40 @@ def get_investigations_for_instrument_in_facility_cycle( client, "Investigation", aggregate=query_aggregate, isis_endpoint=True ) + instrument_id_check = PythonICATWhereFilter( + "facility.instruments.id", instrument_id, "eq" + ) + investigation_instrument_id_check = PythonICATWhereFilter( + "investigationInstruments.instrument.id", instrument_id, "eq", + ) + facility_cycle_id_check = PythonICATWhereFilter( + "facility.facilityCycles.id", facilitycycle_id, "eq" + ) + facility_cycle_start_date_check = PythonICATWhereFilter( + "facility.facilityCycles.startDate", "o.startDate", "lte" + ) + facility_cycle_end_date_check = PythonICATWhereFilter( + "facility.facilityCycles.endDate", "o.startDate", "gte" + ) + + required_filters = [ + instrument_id_check, + investigation_instrument_id_check, + facility_cycle_id_check, + facility_cycle_start_date_check, + facility_cycle_end_date_check, + ] + filters.extend(required_filters) + filter_handler = FilterOrderHandler() + filter_handler.manage_icat_filters(filters, query.query) + + data = query.execute_query(client, True) + + if not data: + raise MissingRecordError("No results found") + else: + return data + def get_investigations_for_instrument_in_facility_cycle_count( client, instrument_id, facilitycycle_id, filters