Skip to content

Commit

Permalink
Feat/0.3.2 (#714)
Browse files Browse the repository at this point in the history
  • Loading branch information
zgqgit committed Jun 28, 2024
2 parents f583cd0 + ef06c0d commit 3ff8027
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 11 deletions.
4 changes: 4 additions & 0 deletions src/backend/bisheng/api/services/assistant.py
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,10 @@ def delete_gpts_tools(cls, user: UserPayload, tool_type_id: int) -> UnifiedRespo
return resp_200()
if exist_tool_type.is_preset:
return ToolTypeIsPresetError.return_resp()
# 判断是否有更新权限
if not user.access_check(exist_tool_type.user_id, exist_tool_type.id, AccessType.GPTS_TOOL_WRITE):
return UnAuthorizedError.return_resp()

GptsToolsDao.delete_tool_type(tool_type_id)
cls.delete_gpts_tool_hook(user, exist_tool_type)
return resp_200()
Expand Down
2 changes: 1 addition & 1 deletion src/backend/bisheng/api/services/evaluation.py
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ def add_evaluation_task(evaluation_id: int):
logger.info(f'evaluation task success id={evaluation_id}')

except Exception as e:
logger.error(f'evaluation task failed id={evaluation_id} {e}')
logger.exception(f'evaluation task failed id={evaluation_id} {str(e)}')
evaluation.status = EvaluationTaskStatus.failed.value
EvaluationDao.update_evaluation(evaluation=evaluation)
redis_client.delete(redis_key)
15 changes: 9 additions & 6 deletions src/backend/bisheng/api/services/role_group_service.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from datetime import datetime
from typing import List, Any
from typing import List, Any, Dict
from uuid import UUID

from fastapi.encoders import jsonable_encoder
Expand All @@ -17,7 +17,7 @@
from bisheng.database.models.group import Group, GroupCreate, GroupDao, GroupRead, DefaultGroup
from bisheng.database.models.group_resource import GroupResourceDao, ResourceTypeEnum
from bisheng.database.models.knowledge import KnowledgeDao
from bisheng.database.models.role import AdminRole
from bisheng.database.models.role import AdminRole, RoleDao
from bisheng.database.models.user import User, UserDao
from bisheng.database.models.user_role import UserRoleDao
from bisheng.database.models.user_group import UserGroupCreate, UserGroupDao, UserGroupRead
Expand Down Expand Up @@ -90,6 +90,8 @@ def update_group_hook(self, request: Request, login_user: UserPayload, group: Gr

def delete_group(self, request: Request, login_user: UserPayload, group_id: int):
"""删除用户组"""
if group_id == DefaultGroup:
raise HTTPException(status_code=500, detail='默认组不能删除')
group_info = GroupDao.get_user_group(group_id)
if not group_info:
return resp_200()
Expand Down Expand Up @@ -121,7 +123,8 @@ def delete_group_hook(self, request: Request, login_user: UserPayload, group_inf
if need_move_resource:
GroupResourceDao.update_group_resource(need_move_resource)
GroupResourceDao.delete_group_resource_by_group_id(group_info.id)

# 删除用户组下的角色列表
RoleDao.delete_role_by_group_id(group_info.id)

def get_group_user_list(self, group_id: int, page_size: int, page_num: int) -> List[User]:
"""获取全量的group列表"""
Expand Down Expand Up @@ -178,16 +181,16 @@ def replace_user_groups(self, request: Request, login_user: UserPayload, user_id

# 记录审计日志
group_infos = GroupDao.get_group_by_ids(old_group + group_ids)
group_dict = {}
group_dict: Dict[int, str] = {}
for one in group_infos:
group_dict[one.id] = one.group_name
note = "编辑前用户组:"
for one in old_group:
note += group_dict.get(one, one) + "、"
note += f'{group_dict.get(one, one)}、'
note = note.rstrip('、')
note += "编辑后用户组:"
for one in group_ids:
note += group_dict.get(one, one) + "、"
note += f'{group_dict.get(one, one)}、'
note = note.rstrip('、')
AuditLogService.update_user(login_user, get_request_ip(request), user_id, group_dict.keys(), note)
return None
Expand Down
1 change: 1 addition & 0 deletions src/backend/bisheng/api/v1/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,7 @@ async def create_role(*,
create_role_hook(request, login_user, db_role)
return resp_200(db_role)
except Exception:
logger.exception('add role error')
raise HTTPException(status_code=500, detail='添加失败,检查是否重复添加')


Expand Down
21 changes: 19 additions & 2 deletions src/backend/bisheng/database/models/role.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from bisheng.database.base import session_getter
from bisheng.database.models.base import SQLModelSerializable
from sqlalchemy import Column, DateTime, text, func
from sqlalchemy import Column, DateTime, text, func, delete, and_, UniqueConstraint
from sqlmodel import Field, select

# 默认普通用户角色的ID
Expand All @@ -13,7 +13,7 @@


class RoleBase(SQLModelSerializable):
role_name: str = Field(index=False, description='前端展示名称', unique=True)
role_name: str = Field(index=False, description='前端展示名称')
group_id: Optional[int] = Field(index=True)
remark: Optional[str] = Field(index=False)
create_time: Optional[datetime] = Field(sa_column=Column(
Expand All @@ -26,6 +26,7 @@ class RoleBase(SQLModelSerializable):


class Role(RoleBase, table=True):
__table_args__ = (UniqueConstraint('group_id', 'role_name', name='group_role_name_uniq'),)
id: Optional[int] = Field(default=None, primary_key=True)


Expand Down Expand Up @@ -94,3 +95,19 @@ def get_role_by_ids(cls, role_ids: List[int]) -> List[Role]:
def get_role_by_id(cls, role_id: int) -> Role:
with session_getter() as session:
return session.query(Role).filter(Role.id == role_id).first()

@classmethod
def delete_role_by_group_id(cls, group_id: int):
"""
删除分组下所有的角色,清理用户对应的角色
"""
from bisheng.database.models.user_role import UserRole
with session_getter() as session:
# 清理对应的用户
all_user = select(UserRole, Role).join(
Role, and_(UserRole.role_id == Role.id,
Role.group_id == group_id)).group_by(UserRole.id)
all_user = session.exec(all_user).all()
session.exec(delete(UserRole).where(UserRole.id.in_([one.id for one in all_user])))
session.exec(delete(Role).where(Role.group_id == group_id))
session.commit()
4 changes: 2 additions & 2 deletions src/frontend/src/components/bs-comp/sheets/TaggingSheet.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export default function TaggingSheet({children}) {

const handleDragEnd = (result) => {
if(!result.destination) return
const newButtons = init
const newButtons = buttons
const [moveItem] = newButtons.splice(result.source.index, 1)
newButtons.splice(result.destination.index, 0, moveItem)
setButtons(newButtons)
Expand Down Expand Up @@ -46,7 +46,7 @@ export default function TaggingSheet({children}) {
)}
</Draggable>
))}
{provided.placeholder}
{/* {provided.placeholder} */}
</div>
)}
</Droppable>
Expand Down

0 comments on commit 3ff8027

Please sign in to comment.