Skip to content

Commit

Permalink
stateengine plugin: get correct current item for action when using se…
Browse files Browse the repository at this point in the history
…_eval
  • Loading branch information
onkelandy committed Jul 5, 2024
1 parent 2a9433f commit eb6e994
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions stateengine/StateEngineAction.py
Original file line number Diff line number Diff line change
Expand Up @@ -594,6 +594,7 @@ class SeActionSetItem(SeActionBase):
def __init__(self, abitem, name: str):
super().__init__(abitem, name)
self.__item = None
self.__eval_item = None
self.__status = None
self.__delta = 0
self.__value = StateEngineValue.SeValue(self._abitem, "value")
Expand All @@ -606,6 +607,7 @@ def __repr__(self):
def _getitem_fromeval(self):
if self.__item is None:
return
self.__eval_item = self.__item
self.__item, self.__value, self.__mindelta, _issue = self.check_getitem_fromeval(self.__item, self.__value,
self.__mindelta)
if self.__item is None:
Expand Down Expand Up @@ -708,6 +710,7 @@ def _execute_set_add_remove(self, state, actionname, namevar, repeat_text, item,
self.update_webif_actionstatus(state, re.findall(pat, actionname)[0], 'True')
# noinspection PyCallingNonCallable
item(value, caller=self._caller, source=source)
self.__item = self.__eval_item

def get(self):
orig_item = self.__item
Expand All @@ -731,6 +734,7 @@ def get(self):
value = None
except Exception:
value = None
self.__item = orig_item
mindelta = self.__mindelta.get()
if mindelta is None:
result = {'function': str(self._function), 'item': item, 'item_from_eval': item_from_eval,
Expand Down Expand Up @@ -977,6 +981,7 @@ class SeActionForceItem(SeActionBase):
def __init__(self, abitem, name: str):
super().__init__(abitem, name)
self.__item = None
self.__eval_item = None
self.__status = None
self.__value = StateEngineValue.SeValue(self._abitem, "value")
self.__mindelta = StateEngineValue.SeValue(self._abitem, "mindelta")
Expand Down Expand Up @@ -1043,6 +1048,7 @@ def _can_execute(self, state):
def _getitem_fromeval(self):
if self.__item is None:
return
self.__eval_item = self.__item
self.__item, self.__value, self.__mindelta, _issue = self.check_getitem_fromeval(self.__item, self.__value,
self.__mindelta)
if self.__item is None:
Expand Down Expand Up @@ -1101,6 +1107,7 @@ def real_execute(self, state, actionname: str, namevar: str = "", repeat_text: s
self.update_webif_actionstatus(state, self._name, 'True')
# noinspection PyCallingNonCallable
self.__item(value, caller=self._caller, source=source)
self.__item = self.__eval_item

def get(self):
orig_item = self.__item
Expand All @@ -1124,6 +1131,7 @@ def get(self):
value = None
except Exception:
value = None
self.__item = orig_item
result = {'function': str(self._function), 'item': item, 'item_from_eval': item_from_eval, 'value': value,
'conditionset': str(self.conditionset.get()), 'previousconditionset': str(self.previousconditionset.get()),
'previousstate_conditionset': str(self.previousstate_conditionset.get()), 'actionstatus': {}}
Expand Down

0 comments on commit eb6e994

Please sign in to comment.