Team Ai
Apppublic

Underground-Digital/Workflow-Engine

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
workflow_fields.py64 linesDownload Raw Back to fields
1from flask_restful import fields2 3from core.helper import encrypter4from core.variables import SecretVariable, SegmentType, Variable5from fields.member_fields import simple_account_fields6from libs.helper import TimestampField7 8ENVIRONMENT_VARIABLE_SUPPORTED_TYPES = (SegmentType.STRING, SegmentType.NUMBER, SegmentType.SECRET)9 10 11class EnvironmentVariableField(fields.Raw):12    def format(self, value):13        # Mask secret variables values in environment_variables14        if isinstance(value, SecretVariable):15            return {16                "id": value.id,17                "name": value.name,18                "value": encrypter.obfuscated_token(value.value),19                "value_type": value.value_type.value,20            }21        if isinstance(value, Variable):22            return {23                "id": value.id,24                "name": value.name,25                "value": value.value,26                "value_type": value.value_type.value,27            }28        if isinstance(value, dict):29            value_type = value.get("value_type")30            if value_type not in ENVIRONMENT_VARIABLE_SUPPORTED_TYPES:31                raise ValueError(f"Unsupported environment variable value type: {value_type}")32            return value33 34 35conversation_variable_fields = {36    "id": fields.String,37    "name": fields.String,38    "value_type": fields.String(attribute="value_type.value"),39    "value": fields.Raw,40    "description": fields.String,41}42 43workflow_fields = {44    "id": fields.String,45    "graph": fields.Raw(attribute="graph_dict"),46    "features": fields.Raw(attribute="features_dict"),47    "hash": fields.String(attribute="unique_hash"),48    "created_by": fields.Nested(simple_account_fields, attribute="created_by_account"),49    "created_at": TimestampField,50    "updated_by": fields.Nested(simple_account_fields, attribute="updated_by_account", allow_null=True),51    "updated_at": TimestampField,52    "tool_published": fields.Boolean,53    "environment_variables": fields.List(EnvironmentVariableField()),54    "conversation_variables": fields.List(fields.Nested(conversation_variable_fields)),55}56 57workflow_partial_fields = {58    "id": fields.String,59    "created_by": fields.String,60    "created_at": TimestampField,61    "updated_by": fields.String,62    "updated_at": TimestampField,63}64