diff --git a/backend/apps/system/api/user.py b/backend/apps/system/api/user.py index 078754a3..bbc74316 100644 --- a/backend/apps/system/api/user.py +++ b/backend/apps/system/api/user.py @@ -127,7 +127,6 @@ async def ws_change(session: SessionDep, current_user: CurrentUser, trans:Trans, user_model: UserModel = get_db_user(session = session, user_id = current_user.id) user_model.oid = oid session.add(user_model) - session.commit() @router.get("/{id}", response_model=UserEditor, summary=f"{PLACEHOLDER_PREFIX}user_detail_api", description=f"{PLACEHOLDER_PREFIX}user_detail_api") @require_permissions(permission=SqlbotPermission(role=['admin'])) @@ -142,6 +141,9 @@ async def query(session: SessionDep, trans: Trans, id: int = Path(description=f" @router.post("", summary=f"{PLACEHOLDER_PREFIX}user_create_api", description=f"{PLACEHOLDER_PREFIX}user_create_api") @require_permissions(permission=SqlbotPermission(role=['admin'])) +async def user_create(session: SessionDep, creator: UserCreator, trans: Trans): + await create(session=session, creator=creator, trans=trans) + async def create(session: SessionDep, creator: UserCreator, trans: Trans): if check_account_exists(session=session, account=creator.account): raise Exception(trans('i18n_exist', msg = f"{trans('i18n_user.account')} [{creator.account}]")) @@ -167,7 +169,6 @@ async def create(session: SessionDep, creator: UserCreator, trans: Trans): session.add_all(db_model_list) user_model.oid = creator.oid_list[0] session.add(user_model) - session.commit() @router.put("", summary=f"{PLACEHOLDER_PREFIX}user_update_api", description=f"{PLACEHOLDER_PREFIX}user_update_api") @@ -204,7 +205,6 @@ async def update(session: SessionDep, editor: UserEditor, trans: Trans): session.add_all(db_model_list) user_model.oid = origin_oid if origin_oid in editor.oid_list else editor.oid_list[0] session.add(user_model) - session.commit() @router.delete("/{id}", summary=f"{PLACEHOLDER_PREFIX}user_del_api", description=f"{PLACEHOLDER_PREFIX}user_del_api") @require_permissions(permission=SqlbotPermission(role=['admin'])) @@ -226,7 +226,6 @@ async def langChange(session: SessionDep, current_user: CurrentUser, trans: Tran db_user: UserModel = get_db_user(session=session, user_id=current_user.id) db_user.language = lang session.add(db_user) - session.commit() @router.patch("/pwd/{id}", summary=f"{PLACEHOLDER_PREFIX}reset_pwd", description=f"{PLACEHOLDER_PREFIX}reset_pwd") @@ -238,7 +237,6 @@ async def pwdReset(session: SessionDep, current_user: CurrentUser, trans: Trans, db_user: UserModel = get_db_user(session=session, user_id=id) db_user.password = default_md5_pwd() session.add(db_user) - session.commit() @router.put("/pwd", summary=f"{PLACEHOLDER_PREFIX}update_pwd", description=f"{PLACEHOLDER_PREFIX}update_pwd") @clear_cache(namespace=CacheNamespace.AUTH_INFO, cacheName=CacheName.USER_INFO, keyExpression="current_user.id") @@ -251,7 +249,6 @@ async def pwdUpdate(session: SessionDep, current_user: CurrentUser, trans: Trans raise Exception(trans('i18n_error', key = trans('i18n_user.password'))) db_user.password = md5pwd(new_pwd) session.add(db_user) - session.commit() @router.patch("/status", summary=f"{PLACEHOLDER_PREFIX}update_status", description=f"{PLACEHOLDER_PREFIX}update_status") @@ -265,5 +262,4 @@ async def statusChange(session: SessionDep, current_user: CurrentUser, trans: Tr return {"message": "status not supported"} db_user: UserModel = get_db_user(session=session, user_id=statusDto.id) db_user.status = status - session.add(db_user) - session.commit() \ No newline at end of file + session.add(db_user) \ No newline at end of file diff --git a/backend/apps/system/api/workspace.py b/backend/apps/system/api/workspace.py index aa5f6fa2..21eddf9a 100644 --- a/backend/apps/system/api/workspace.py +++ b/backend/apps/system/api/workspace.py @@ -141,10 +141,12 @@ async def create(session: SessionDep, current_user: CurrentUser, trans: Trans, c await clean_user_cache(uid) session.add_all(db_model_list) - session.commit() @router.put("/uws", summary=f"{PLACEHOLDER_PREFIX}ws_user_status_api", description=f"{PLACEHOLDER_PREFIX}ws_user_status_api") @require_permissions(permission=SqlbotPermission(role=['admin'])) +async def uws_edit(session: SessionDep, trans: Trans, editor: UserWsEditor): + await edit(session, trans, editor) + async def edit(session: SessionDep, trans: Trans, editor: UserWsEditor): if not editor.oid or not editor.uid: raise Exception(trans('i18n_miss_args', key = '[oid, uid]')) @@ -158,7 +160,6 @@ async def edit(session: SessionDep, trans: Trans, editor: UserWsEditor): session.add(db_model) await clean_user_cache(editor.uid) - session.commit() @router.delete("/uws", summary=f"{PLACEHOLDER_PREFIX}ws_user_unbind_api", description=f"{PLACEHOLDER_PREFIX}ws_user_unbind_api") @require_permissions(permission=SqlbotPermission(role=['ws_admin'])) @@ -176,8 +177,6 @@ async def delete(session: SessionDep, current_user: CurrentUser, trans: Trans, d await reset_single_user_oid(session, uid, oid, False) await clean_user_cache(uid) - session.commit() - @router.get("", response_model=list[WorkspaceModel], summary=f"{PLACEHOLDER_PREFIX}ws_all_api", description=f"{PLACEHOLDER_PREFIX}ws_all_api") @require_permissions(permission=SqlbotPermission(role=['admin'])) async def query(session: SessionDep, trans: Trans): @@ -194,7 +193,6 @@ async def add(session: SessionDep, creator: WorkspaceBase): db_model = WorkspaceModel.model_validate(creator) db_model.create_time = get_timestamp() session.add(db_model) - session.commit() @router.put("", summary=f"{PLACEHOLDER_PREFIX}ws_update_api", description=f"{PLACEHOLDER_PREFIX}ws_update_api") @require_permissions(permission=SqlbotPermission(role=['admin'])) @@ -205,7 +203,6 @@ async def update(session: SessionDep, editor: WorkspaceEditor): raise HTTPException(f"WorkspaceModel with id {id} not found") db_model.name = editor.name session.add(db_model) - session.commit() @router.get("/{id}", response_model=WorkspaceModel, summary=f"{PLACEHOLDER_PREFIX}ws_query_api", description=f"{PLACEHOLDER_PREFIX}ws_query_api") @require_permissions(permission=SqlbotPermission(role=['admin'])) @@ -245,6 +242,5 @@ async def single_delete(session: SessionDep, current_user: CurrentUser, id: int session.exec(sqlmodel_delete(UserWsModel).where(UserWsModel.oid == id)) session.delete(db_model) - session.commit() diff --git a/backend/common/core/db.py b/backend/common/core/db.py index d4adf346..dca6dd21 100644 --- a/backend/common/core/db.py +++ b/backend/common/core/db.py @@ -11,7 +11,14 @@ def get_session(): with Session(engine) as session: - yield session + try: + yield session + session.commit() + except Exception: + session.rollback() + raise + finally: + session.close() def init_db():