feat: add validation for marked name and comment length in workflow APIs

Signed-off-by: -LAN- <laipz8200@outlook.com>
This commit is contained in:
-LAN- 2025-03-04 20:53:05 +08:00
parent 0b3b468f28
commit bb8a40f721
No known key found for this signature in database
GPG Key ID: 6BA0D108DED011FF
5 changed files with 447 additions and 121 deletions

View File

@ -373,6 +373,13 @@ class PublishedWorkflowApi(Resource):
parser.add_argument("marked_comment", type=str, required=False, default="", location="json") parser.add_argument("marked_comment", type=str, required=False, default="", location="json")
args = parser.parse_args() args = parser.parse_args()
# Validate name and comment length
if args.marked_name and len(args.marked_name) > 20:
raise ValueError("Marked name cannot exceed 20 characters")
if args.marked_comment and len(args.marked_comment) > 100:
raise ValueError("Marked comment cannot exceed 100 characters")
args = parser.parse_args()
workflow_service = WorkflowService() workflow_service = WorkflowService()
with Session(db.engine) as session: with Session(db.engine) as session:
workflow = workflow_service.publish_workflow( workflow = workflow_service.publish_workflow(
@ -569,6 +576,13 @@ class WorkflowByIdApi(Resource):
parser.add_argument("marked_comment", type=str, required=False, location="json") parser.add_argument("marked_comment", type=str, required=False, location="json")
args = parser.parse_args() args = parser.parse_args()
# Validate name and comment length
if args.marked_name and len(args.marked_name) > 20:
raise ValueError("Marked name cannot exceed 20 characters")
if args.marked_comment and len(args.marked_comment) > 100:
raise ValueError("Marked comment cannot exceed 100 characters")
args = parser.parse_args()
# Prepare update data # Prepare update data
update_data = {} update_data = {}
if args.get("marked_name") is not None: if args.get("marked_name") is not None:

View File

@ -2,7 +2,7 @@ import json
from collections.abc import Mapping, Sequence from collections.abc import Mapping, Sequence
from datetime import UTC, datetime from datetime import UTC, datetime
from enum import Enum from enum import Enum
from typing import TYPE_CHECKING, Any, Optional, Union from typing import TYPE_CHECKING, Any, Optional, Self, Union
from uuid import uuid4 from uuid import uuid4
if TYPE_CHECKING: if TYPE_CHECKING:
@ -145,7 +145,7 @@ class Workflow(Base):
conversation_variables: Sequence[Variable], conversation_variables: Sequence[Variable],
marked_name: str = "", marked_name: str = "",
marked_comment: str = "", marked_comment: str = "",
): ) -> Self:
workflow = Workflow() workflow = Workflow()
workflow.id = str(uuid4()) workflow.id = str(uuid4())
workflow.tenant_id = tenant_id workflow.tenant_id = tenant_id

548
api/poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -151,6 +151,7 @@ pytest-benchmark = "~4.0.0"
pytest-env = "~1.1.3" pytest-env = "~1.1.3"
pytest-mock = "~3.14.0" pytest-mock = "~3.14.0"
types-beautifulsoup4 = "~4.12.0.20241020" types-beautifulsoup4 = "~4.12.0.20241020"
types-deprecated = "^1.2.15.20250304"
types-flask-cors = "~5.0.0.20240902" types-flask-cors = "~5.0.0.20240902"
types-flask-migrate = "~4.1.0.20250112" types-flask-migrate = "~4.1.0.20250112"
types-html5lib = "~1.1.11.20241018" types-html5lib = "~1.1.11.20241018"

View File

@ -35,6 +35,7 @@ from models.workflow import (
WorkflowType, WorkflowType,
) )
from services.errors.app import WorkflowHashNotEqualError from services.errors.app import WorkflowHashNotEqualError
from services.workflow.workflow_converter import WorkflowConverter
from .errors.workflow_service import DraftWorkflowDeletionError, WorkflowInUseError from .errors.workflow_service import DraftWorkflowDeletionError, WorkflowInUseError