From aa6452b3bf20dec05257c942a8394ba87a78970a Mon Sep 17 00:00:00 2001 From: Yeuoly Date: Mon, 6 Jan 2025 21:12:50 +0800 Subject: [PATCH] fix: use session to manage AppSite --- api/controllers/console/app/site.py | 55 ++++++++++++++++------------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/api/controllers/console/app/site.py b/api/controllers/console/app/site.py index db29b95c41..c5a9c4d76e 100644 --- a/api/controllers/console/app/site.py +++ b/api/controllers/console/app/site.py @@ -2,6 +2,7 @@ from datetime import UTC, datetime from flask_login import current_user # type: ignore from flask_restful import Resource, marshal_with, reqparse # type: ignore +from sqlalchemy.orm import Session from werkzeug.exceptions import Forbidden, NotFound from constants.languages import supported_language @@ -50,33 +51,37 @@ class AppSite(Resource): if not current_user.is_editor: raise Forbidden() - site = Site.query.filter(Site.app_id == app_model.id).one_or_404() + with Session(db.engine) as session: + site = session.query(Site).filter(Site.app_id == app_model.id).first() - for attr_name in [ - "title", - "icon_type", - "icon", - "icon_background", - "description", - "default_language", - "chat_color_theme", - "chat_color_theme_inverted", - "customize_domain", - "copyright", - "privacy_policy", - "custom_disclaimer", - "customize_token_strategy", - "prompt_public", - "show_workflow_steps", - "use_icon_as_answer_icon", - ]: - value = args.get(attr_name) - if value is not None: - setattr(site, attr_name, value) + if not site: + raise NotFound - site.updated_by = current_user.id - site.updated_at = datetime.now(UTC).replace(tzinfo=None) - db.session.commit() + for attr_name in [ + "title", + "icon_type", + "icon", + "icon_background", + "description", + "default_language", + "chat_color_theme", + "chat_color_theme_inverted", + "customize_domain", + "copyright", + "privacy_policy", + "custom_disclaimer", + "customize_token_strategy", + "prompt_public", + "show_workflow_steps", + "use_icon_as_answer_icon", + ]: + value = args.get(attr_name) + if value is not None: + setattr(site, attr_name, value) + + site.updated_by = current_user.id + site.updated_at = datetime.now(UTC).replace(tzinfo=None) + session.commit() return site