|
|
|
|
@ -7,7 +7,7 @@ from werkzeug.exceptions import InternalServerError, NotFound
|
|
|
|
|
|
|
|
|
|
import services
|
|
|
|
|
from controllers.console import api
|
|
|
|
|
from controllers.console.app.error import ConversationCompletedError, DraftWorkflowNotExist
|
|
|
|
|
from controllers.console.app.error import ConversationCompletedError, DraftWorkflowNotExist, DraftWorkflowNotSync
|
|
|
|
|
from controllers.console.app.wraps import get_app_model
|
|
|
|
|
from controllers.console.setup import setup_required
|
|
|
|
|
from controllers.console.wraps import account_initialization_required
|
|
|
|
|
@ -20,6 +20,7 @@ from libs.helper import TimestampField, uuid_value
|
|
|
|
|
from libs.login import current_user, login_required
|
|
|
|
|
from models.model import App, AppMode
|
|
|
|
|
from services.app_generate_service import AppGenerateService
|
|
|
|
|
from services.errors.app import WorkflowHashNotEqualError
|
|
|
|
|
from services.workflow_service import WorkflowService
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
@ -59,6 +60,7 @@ class DraftWorkflowApi(Resource):
|
|
|
|
|
parser = reqparse.RequestParser()
|
|
|
|
|
parser.add_argument('graph', type=dict, required=True, nullable=False, location='json')
|
|
|
|
|
parser.add_argument('features', type=dict, required=True, nullable=False, location='json')
|
|
|
|
|
parser.add_argument('hash', type=str, required=False, location='json')
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
elif 'text/plain' in content_type:
|
|
|
|
|
try:
|
|
|
|
|
@ -71,7 +73,8 @@ class DraftWorkflowApi(Resource):
|
|
|
|
|
|
|
|
|
|
args = {
|
|
|
|
|
'graph': data.get('graph'),
|
|
|
|
|
'features': data.get('features')
|
|
|
|
|
'features': data.get('features'),
|
|
|
|
|
'hash': data.get('hash')
|
|
|
|
|
}
|
|
|
|
|
except json.JSONDecodeError:
|
|
|
|
|
return {'message': 'Invalid JSON data'}, 400
|
|
|
|
|
@ -79,15 +82,21 @@ class DraftWorkflowApi(Resource):
|
|
|
|
|
abort(415)
|
|
|
|
|
|
|
|
|
|
workflow_service = WorkflowService()
|
|
|
|
|
workflow = workflow_service.sync_draft_workflow(
|
|
|
|
|
app_model=app_model,
|
|
|
|
|
graph=args.get('graph'),
|
|
|
|
|
features=args.get('features'),
|
|
|
|
|
account=current_user
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
workflow = workflow_service.sync_draft_workflow(
|
|
|
|
|
app_model=app_model,
|
|
|
|
|
graph=args.get('graph'),
|
|
|
|
|
features=args.get('features'),
|
|
|
|
|
unique_hash=args.get('hash'),
|
|
|
|
|
account=current_user
|
|
|
|
|
)
|
|
|
|
|
except WorkflowHashNotEqualError:
|
|
|
|
|
raise DraftWorkflowNotSync()
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
"result": "success",
|
|
|
|
|
"hash": workflow.unique_hash,
|
|
|
|
|
"updated_at": TimestampField().format(workflow.updated_at or workflow.created_at)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|