Fixed #61 : SheerkaDebugManager: Add get_value()
Fixed #60 : Hash error when ReturnValue is a list of list Fixed #59 : Implement smart_get() Fixed #58 : SheerkaPromptCompleter: Cannot parse concept token Fixed #57 : SheerkaPrompt: Add concept autocompletion Fixed #56 : automatically backup command Fixed #54 : I can record execution status Fixed #53 : ConceptManager: modify_concept fails
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from collections import namedtuple
|
||||
|
||||
from core.global_symbols import NotInit
|
||||
from core.sheerka.services.sheerka_service import BaseService
|
||||
from sdp.sheerkaDataProvider import Event
|
||||
|
||||
@@ -7,14 +8,22 @@ hist = namedtuple("HistoryTest", "text status") # tests purposes only
|
||||
|
||||
|
||||
class History:
|
||||
def __init__(self, event: Event, result):
|
||||
def __init__(self, event: Event, result, extra_info):
|
||||
self.event = event
|
||||
self.result = result
|
||||
self._status = None
|
||||
self.extra_info = extra_info
|
||||
self._status = NotInit
|
||||
self._is_state_modified = NotInit
|
||||
self._format_instructions = None
|
||||
|
||||
def __str__(self):
|
||||
msg = f"{self.event.get_digest()} {self.event.date.strftime('%d/%m/%Y %H:%M:%S')} : {self.event.message}"
|
||||
if self.is_state_modified is NotInit:
|
||||
state_modified_str = "[?]"
|
||||
else:
|
||||
state_modified_str = "[X]" if self.is_state_modified else "[ ]"
|
||||
event_date = self.event.date.strftime('%d/%m/%Y %H:%M:%S')
|
||||
|
||||
msg = f"{self.event.get_digest()} {event_date} {state_modified_str} : {self.event.message}"
|
||||
status = self.status
|
||||
if status is not None:
|
||||
msg += f" => {status}"
|
||||
@@ -40,12 +49,28 @@ class History:
|
||||
|
||||
@property
|
||||
def status(self):
|
||||
if self._status:
|
||||
if self._status is not NotInit:
|
||||
return self._status
|
||||
|
||||
if self.extra_info and "status" in self.extra_info:
|
||||
self._status = self.extra_info["status"]
|
||||
return self._status
|
||||
|
||||
self._status = self.result.get_status() if self.result else None
|
||||
return self._status
|
||||
|
||||
@property
|
||||
def is_state_modified(self):
|
||||
if self._is_state_modified is not NotInit:
|
||||
return self._is_state_modified
|
||||
|
||||
if self.extra_info and "is_state_modified" in self.extra_info:
|
||||
self._is_state_modified = self.extra_info["is_state_modified"]
|
||||
return self._is_state_modified
|
||||
|
||||
self._is_state_modified = self.result.is_state_modified() if self.result else None
|
||||
return self._is_state_modified
|
||||
|
||||
def get_format_instructions(self):
|
||||
return self._format_instructions
|
||||
|
||||
@@ -73,4 +98,10 @@ class SheerkaHistoryManager(BaseService):
|
||||
result = self.sheerka.om.current_sdp().load_result(event.get_digest())
|
||||
except (IOError, KeyError):
|
||||
result = None
|
||||
yield History(event, result)
|
||||
|
||||
try:
|
||||
extra_info = self.sheerka.om.current_sdp().load_result_extra_info(event.get_digest())
|
||||
except (IOError, KeyError):
|
||||
extra_info = None
|
||||
|
||||
yield History(event, result, extra_info)
|
||||
|
||||
Reference in New Issue
Block a user