Skip to content
Snippets Groups Projects
Commit 0ba33d45 authored by David Hammer's avatar David Hammer
Browse files

Query for constants using all possible conditions, not just one

parent 84fe0e9f
No related branches found
No related tags found
1 merge request!12Snapshot: field test deployed version as of end of run 202201
...@@ -22,6 +22,7 @@ from karabo.bound import ( ...@@ -22,6 +22,7 @@ from karabo.bound import (
SLOT_ELEMENT, SLOT_ELEMENT,
STRING_ELEMENT, STRING_ELEMENT,
UINT32_ELEMENT, UINT32_ELEMENT,
VECTOR_UINT32_ELEMENT,
) )
from karabo import version as karaboVersion from karabo import version as karaboVersion
from pkg_resources import parse_version from pkg_resources import parse_version
...@@ -73,16 +74,16 @@ def add_status_schema_from_enum(schema, prefix, enum_class): ...@@ -73,16 +74,16 @@ def add_status_schema_from_enum(schema, prefix, enum_class):
.initialValue("") .initialValue("")
.commit(), .commit(),
STRING_ELEMENT(schema) VECTOR_UINT32_ELEMENT(schema)
.key(f"{constant_node}.conditionId") .key(f"{constant_node}.conditionIds")
.readOnly() .readOnly()
.initialValue("") .initialValue([])
.commit(), .commit(),
STRING_ELEMENT(schema) VECTOR_UINT32_ELEMENT(schema)
.key(f"{constant_node}.constantId") .key(f"{constant_node}.constantIds")
.readOnly() .readOnly()
.initialValue("") .initialValue([])
.commit(), .commit(),
STRING_ELEMENT(schema) STRING_ELEMENT(schema)
...@@ -402,7 +403,7 @@ class BaseCalcatFriend: ...@@ -402,7 +403,7 @@ class BaseCalcatFriend:
return resp["data"]["id"] return resp["data"]["id"]
@utils.threadsafe_cache @utils.threadsafe_cache
def condition_id(self, pdu, condition): def condition_ids(self, pdu, condition):
# modifying condition parameter messes with cache # modifying condition parameter messes with cache
condition_with_detector = copy.copy(condition) condition_with_detector = copy.copy(condition)
condition_with_detector["Detector UUID"] = pdu condition_with_detector["Detector UUID"] = pdu
...@@ -415,18 +416,17 @@ class BaseCalcatFriend: ...@@ -415,18 +416,17 @@ class BaseCalcatFriend:
ConditionNotFound, ConditionNotFound,
f"Failed to find condition {condition} for pdu {pdu}", f"Failed to find condition {condition} for pdu {pdu}",
) )
return resp["data"][0]["id"] return [d["id"] for d in resp["data"]]
@utils.threadsafe_cache def constant_ids(self, calibration_id, condition_ids):
def constant_id(self, calibration_id, condition_id): resp = CalibrationConstant.get_all_by_conditions(
resp = CalibrationConstant.get_by_uk(
self.client, self.client,
calibration_id=calibration_id, calibration_id=calibration_id,
detector_type_id=self.detector_type_id, detector_type_id=self.detector_type_id,
condition_id=condition_id, condition_ids=condition_ids,
) )
self._check_resp(resp, warning="Failed to retrieve constant ID") self._check_resp(resp, warning="Failed to retrieve constant ID")
return resp["data"]["id"] return [d["id"] for d in resp["data"]]
def get_constant_version(self, constant): def get_constant_version(self, constant):
# TODO: catch exceptions, give warnings appropriately # TODO: catch exceptions, give warnings appropriately
...@@ -447,19 +447,19 @@ class BaseCalcatFriend: ...@@ -447,19 +447,19 @@ class BaseCalcatFriend:
self._set_status(constant, "calibrationId", calibration_id) self._set_status(constant, "calibrationId", calibration_id)
condition = self._constants_need_conditions[constant]() condition = self._constants_need_conditions[constant]()
condition_id = self.condition_id( condition_ids = self.condition_ids(
self._karabo_da_to_float_uuid[karabo_da], condition self._karabo_da_to_float_uuid[karabo_da], condition
) )
self._set_status(constant, "conditionId", condition_id) self._set_status(constant, "conditionIds", condition_ids)
constant_id = self.constant_id( constant_ids = self.constant_ids(
calibration_id=calibration_id, condition_id=condition_id calibration_id=calibration_id, condition_ids=condition_ids
) )
self._set_status(constant, "constantId", constant_id) self._set_status(constant, "constantIds", constant_ids)
resp = CalibrationConstantVersion.get_closest_by_time( resp = CalibrationConstantVersion.get_closest_by_time(
self.client, self.client,
calibration_constant_ids=[constant_id], calibration_constant_ids=constant_ids,
physical_detector_unit_id=self._karabo_da_to_id[karabo_da], physical_detector_unit_id=self._karabo_da_to_id[karabo_da],
event_at=self._get_param("constantVersionEventAt"), event_at=self._get_param("constantVersionEventAt"),
snapshot_at=None, snapshot_at=None,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment