Files
MyManagingTools/src/components/workflows/WorkflowsApp.py

125 lines
4.7 KiB
Python

import json
import logging
from fasthtml.fastapp import fast_app
from components.workflows.constants import Routes
from core.instance_manager import InstanceManager, debug_session
logger = logging.getLogger("WorkflowsApp")
repositories_app, rt = fast_app()
@rt(Routes.AddWorkflow)
def get(session, _id: str):
logger.debug(f"Entering {Routes.AddWorkflow} with args {debug_session(session)}, {_id=}")
instance = InstanceManager.get(session, _id)
return instance.request_new_workflow()
@rt(Routes.AddWorkflow)
def post(session, _id: str, tab_id: str, form_id: str, name: str, tab_boundaries: str):
logger.debug(
f"Entering {Routes.AddWorkflow} with args {debug_session(session)}, {_id=}, {tab_id=}, {form_id=}, {name=}, {tab_boundaries=}")
instance = InstanceManager.get(session, _id)
return instance.add_new_workflow(tab_id, form_id, name, json.loads(tab_boundaries))
@rt(Routes.ShowWorkflow)
def post(session, _id: str, name: str, tab_boundaries: str):
logger.debug(
f"Entering {Routes.AddWorkflow} with args {debug_session(session)}, {_id=}, {name=}, {tab_boundaries=}")
instance = InstanceManager.get(session, _id)
return instance.show_workflow(name, json.loads(tab_boundaries))
@rt(Routes.AddComponent)
def post(session, _id: str, component_type: str, x: int, y: int):
logger.debug(
f"Entering {Routes.AddComponent} with args {debug_session(session)}, {_id=}, {component_type=}, {x=}, {y=}")
instance = InstanceManager.get(session, _id)
return instance.add_component(component_type, x, y)
@rt(Routes.MoveComponent)
def post(session, _id: str, component_id: str, x: int, y: int):
logger.debug(
f"Entering {Routes.MoveComponent} with args {debug_session(session)}, {_id=}, {component_id=}, {x=}, {y=}")
instance = InstanceManager.get(session, _id)
return instance.move_component(component_id, x, y)
@rt(Routes.DeleteComponent)
def post(session, _id: str, component_id: str):
logger.debug(
f"Entering {Routes.DeleteComponent} with args {debug_session(session)}, {_id=}, {component_id=}")
instance = InstanceManager.get(session, _id)
return instance.delete_component(component_id)
@rt(Routes.AddConnection)
def post(session, _id: str, from_id: str, to_id: str):
logger.debug(
f"Entering {Routes.AddConnection} with args {debug_session(session)}, {_id=}, {from_id=}, {to_id=}")
instance = InstanceManager.get(session, _id)
return instance.add_connection(from_id, to_id)
@rt(Routes.DeleteConnection)
def post(session, _id: str, from_id: str, to_id: str):
logger.debug(
f"Entering {Routes.DeleteConnection} with args {debug_session(session)}, {_id=}, {from_id=}, {to_id=}")
instance = InstanceManager.get(session, _id)
return instance.delete_connection(from_id, to_id)
@rt(Routes.ResizeDesigner)
def post(session, _id: str, designer_height: int):
logger.debug(
f"Entering {Routes.ResizeDesigner} with args {debug_session(session)}, {_id=}, {designer_height=}")
instance = InstanceManager.get(session, _id)
return instance.set_designer_height(designer_height)
@rt(Routes.SelectComponent)
def post(session, _id: str, component_id: str):
logger.debug(
f"Entering {Routes.SelectComponent} with args {debug_session(session)}, {_id=}, {component_id=}")
instance = InstanceManager.get(session, _id)
return instance.select_component(component_id)
@rt(Routes.SaveProperties)
def post(session, _id: str, component_id: str, details: dict):
logger.debug(
f"Entering {Routes.SaveProperties} with args {debug_session(session)}, {_id=}, {component_id=}, {details=}")
instance = InstanceManager.get(session, _id)
details.pop("_id")
details.pop("component_id")
return instance.save_properties(component_id, details)
@rt(Routes.CancelProperties)
def post(session, _id: str, component_id: str):
logger.debug(
f"Entering {Routes.CancelProperties} with args {debug_session(session)}, {_id=}, {component_id=}")
instance = InstanceManager.get(session, _id)
return instance.cancel_properties(component_id)
@rt(Routes.SelectProcessor)
def post(session, _id: str, component_id: str, processor_name: str):
logger.debug(
f"Entering {Routes.SelectProcessor} with args {debug_session(session)}, {_id=}, {component_id=}, {processor_name=}")
instance = InstanceManager.get(session, _id)
return instance.set_selected_processor(component_id, processor_name)
@rt(Routes.OnProcessorDetailsEvent)
def post(session, _id: str, component_id: str, event_name: str, details: dict):
logger.debug(
f"Entering {Routes.OnProcessorDetailsEvent} with args {debug_session(session)}, {_id=}, {component_id=}, {event_name=}, {details=}")
instance = InstanceManager.get(session, _id)
details.pop("_id")
details.pop("component_id")
details.pop("event_name")
return instance.on_processor_details_event(component_id, event_name, details)