I can save workflow state + uptated css + started Properties Panek
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
import logging
|
||||
from dataclasses import dataclass, field
|
||||
|
||||
from components.workflows.constants import WORKFLOWS_SETTINGS_ENTRY
|
||||
from components.workflows.constants import WORKFLOWS_DB_ENTRY, WORKFLOW_DESIGNER_DB_ENTRY, \
|
||||
WORKFLOW_DESIGNER_DB_SETTINGS_ENTRY, WORKFLOW_DESIGNER_DB_STATE_ENTRY
|
||||
from core.settings_management import SettingsManager
|
||||
|
||||
logger = logging.getLogger("WorkflowsSettings")
|
||||
|
||||
|
||||
# Data structures
|
||||
@dataclass
|
||||
class WorkflowComponent:
|
||||
@@ -23,15 +25,19 @@ class Connection:
|
||||
from_id: str
|
||||
to_id: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class WorkflowsDesignerSettings:
|
||||
workflow_name: str
|
||||
workflow_name: str = "No Name"
|
||||
|
||||
|
||||
@dataclass
|
||||
class WorkflowsDesignerState:
|
||||
components: dict[str, WorkflowComponent] = field(default_factory=dict)
|
||||
connections: list[Connection] = field(default_factory=list)
|
||||
component_counter = 0
|
||||
designer_height = 230
|
||||
|
||||
|
||||
@dataclass
|
||||
class WorkflowsSettings:
|
||||
@@ -54,7 +60,7 @@ class WorkflowsDbManager:
|
||||
raise ValueError(f"Workflow '{workflow_name}' already exists.")
|
||||
|
||||
settings.workflows.append(workflow_name)
|
||||
self.settings_manager.save(self.session, WORKFLOWS_SETTINGS_ENTRY, settings)
|
||||
self.settings_manager.save(self.session, WORKFLOWS_DB_ENTRY, settings)
|
||||
return True
|
||||
|
||||
def get_workflow(self, workflow_name: str):
|
||||
@@ -92,7 +98,7 @@ class WorkflowsDbManager:
|
||||
raise ValueError(f"workflow '{workflow_name}' does not exist.")
|
||||
|
||||
settings.workflows.remove(workflow_name)
|
||||
self.settings_manager.save(self.session, WORKFLOWS_SETTINGS_ENTRY, settings)
|
||||
self.settings_manager.save(self.session, WORKFLOWS_DB_ENTRY, settings)
|
||||
return True
|
||||
|
||||
def exists_workflow(self, workflow_name):
|
||||
@@ -115,11 +121,54 @@ class WorkflowsDbManager:
|
||||
"""
|
||||
settings = self._get_settings()
|
||||
settings.selected_workflow = workflow_name
|
||||
self.settings_manager.save(self.session, WORKFLOWS_SETTINGS_ENTRY, settings)
|
||||
self.settings_manager.save(self.session, WORKFLOWS_DB_ENTRY, settings)
|
||||
|
||||
def get_selected_workflow(self):
|
||||
settings = self._get_settings()
|
||||
return settings.selected_workflow
|
||||
|
||||
def _get_settings(self):
|
||||
return self.settings_manager.load(self.session, WORKFLOWS_SETTINGS_ENTRY, default=WorkflowsSettings())
|
||||
return self.settings_manager.load(self.session, WORKFLOWS_DB_ENTRY, default=WorkflowsSettings())
|
||||
|
||||
|
||||
class WorkflowsDesignerDbManager:
|
||||
def __init__(self, session: dict, settings_manager: SettingsManager):
|
||||
self._session = session
|
||||
self._settings_manager = settings_manager
|
||||
|
||||
@staticmethod
|
||||
def _get_db_entry(key):
|
||||
return f"{WORKFLOW_DESIGNER_DB_ENTRY}_{key}"
|
||||
|
||||
def save_settings(self, key: str, settings: WorkflowsDesignerSettings):
|
||||
self._settings_manager.put(self._session,
|
||||
self._get_db_entry(key),
|
||||
WORKFLOW_DESIGNER_DB_SETTINGS_ENTRY,
|
||||
settings)
|
||||
|
||||
def save_state(self, key: str, state: WorkflowsDesignerState):
|
||||
self._settings_manager.put(self._session,
|
||||
self._get_db_entry(key),
|
||||
WORKFLOW_DESIGNER_DB_STATE_ENTRY,
|
||||
state)
|
||||
|
||||
def save_all(self, key: str, settings: WorkflowsDesignerSettings = None, state: WorkflowsDesignerState = None):
|
||||
items = {}
|
||||
if settings is not None:
|
||||
items[WORKFLOW_DESIGNER_DB_SETTINGS_ENTRY] = settings
|
||||
if state is not None:
|
||||
items[WORKFLOW_DESIGNER_DB_STATE_ENTRY] = state
|
||||
|
||||
self._settings_manager.put_many(self._session, self._get_db_entry(key), items)
|
||||
|
||||
def load_settings(self, key) -> WorkflowsDesignerSettings:
|
||||
return self._settings_manager.get(self._session,
|
||||
self._get_db_entry(key),
|
||||
WORKFLOW_DESIGNER_DB_SETTINGS_ENTRY,
|
||||
default=WorkflowsDesignerSettings())
|
||||
|
||||
def load_state(self, key) -> WorkflowsDesignerState:
|
||||
return self._settings_manager.get(self._session,
|
||||
self._get_db_entry(key),
|
||||
WORKFLOW_DESIGNER_DB_STATE_ENTRY,
|
||||
default=WorkflowsDesignerState())
|
||||
|
||||
Reference in New Issue
Block a user