55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
from dataclasses import dataclass
|
|
|
|
from core.global_symbols import NotFound, ErrorObj
|
|
from core.utils import sheerka_deepcopy
|
|
|
|
|
|
@dataclass
|
|
class ServiceObj:
|
|
event_id: str # digest of the event where the object is created / modified
|
|
|
|
|
|
class BaseService:
|
|
"""
|
|
Base class for services
|
|
"""
|
|
|
|
def __init__(self, sheerka, order=999):
|
|
self.sheerka = sheerka
|
|
self.order = order # initialisation order. The lowest is initialized first
|
|
|
|
def initialize(self):
|
|
"""
|
|
Adds cache or bind methods
|
|
:return:
|
|
"""
|
|
pass
|
|
|
|
def store_values(self, context, *args):
|
|
"""
|
|
Use variable Manager to store the state of the service
|
|
"""
|
|
for prop_name in args:
|
|
self.sheerka.record_var(context, self.NAME, prop_name, sheerka_deepcopy(getattr(self, prop_name)))
|
|
|
|
def restore_values(self, *args):
|
|
"""
|
|
Use Variable Manager to restore the state of a service
|
|
:param args:
|
|
:return:
|
|
"""
|
|
for prop_name in args:
|
|
if (value := self.sheerka.load_var(self.NAME, prop_name)) is not NotFound:
|
|
setattr(self, prop_name, value)
|
|
|
|
def store_var(self, context, var_name):
|
|
"""
|
|
Store/record the value of an attribute
|
|
"""
|
|
self.sheerka.record_var(context, self.NAME, var_name, getattr(self, var_name))
|
|
|
|
|
|
@dataclass()
|
|
class FailedToCompileError(Exception, ErrorObj):
|
|
cause: list
|