68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
from typing import Any
|
|
from core import VorkNode
|
|
from model_nodes.node_callback_models import (
|
|
CallbackNodeData,
|
|
CallbackNodeLinks,
|
|
CallbackNodeCoreSchema,
|
|
CallbackNodeCoreSchemaData,
|
|
CALLBACK_FORM_DESCRIPTOR,
|
|
)
|
|
|
|
|
|
class VorkNodeCallback(VorkNode):
|
|
|
|
def __init__(self, data: dict[str, Any], links: dict[str, Any] = None):
|
|
"""
|
|
Инициализация узла callback
|
|
"""
|
|
super().__init__(data, links or {})
|
|
|
|
@property
|
|
def id(self) -> str:
|
|
return "CALLBACK"
|
|
|
|
@classmethod
|
|
def form(cls) -> dict[str, Any]:
|
|
"""
|
|
Возвращает статический дескриптор формы для узла Callback
|
|
"""
|
|
return CALLBACK_FORM_DESCRIPTOR
|
|
|
|
def validate(self) -> CallbackNodeCoreSchema:
|
|
"""
|
|
Валидирует данные узла callback и возвращает схему
|
|
"""
|
|
try:
|
|
|
|
validated_data = self.validate_data()
|
|
|
|
validated_links = self.validate_links()
|
|
|
|
node_data = None
|
|
|
|
return CallbackNodeCoreSchema(
|
|
ps_id=validated_data.ps_id,
|
|
node_type=validated_data.node_type,
|
|
parent_id=validated_links.parent_id,
|
|
parent_port_number=validated_links.parent_port_number,
|
|
data=node_data
|
|
)
|
|
except Exception as e:
|
|
print(f"Callback node validation error: {e}")
|
|
raise
|
|
|
|
def validate_data(self) -> CallbackNodeData:
|
|
"""
|
|
Валидирует данные узла callback
|
|
"""
|
|
return CallbackNodeData(**self.data)
|
|
|
|
def validate_links(self) -> CallbackNodeLinks:
|
|
"""
|
|
Валидирует связи узла callback
|
|
"""
|
|
return CallbackNodeLinks(**self.links)
|
|
|
|
def process(self, context):
|
|
pass
|