项目管理_删除项目功能完成,依旧是暂时去除了权限验证以测试代码

This commit is contained in:
MiLla 2024-11-20 15:07:21 +08:00
parent a8e9a4920b
commit 0594809a48

View File

@ -27,56 +27,7 @@ async def get_project(response: Response, session: SessionDep):
raise HTTPException(status_code=404, detail="Project not found") raise HTTPException(status_code=404, detail="Project not found")
return {"projects": projects} return {"projects": projects}
#新增与修改项目
# 新增和修改项目
# @router.post("/api/s1/project")
# async def create_project(data:dict, session: SessionDep, current_user: User = Depends(get_current_user)):
# if current_user.role != TenantRole:
# raise HTTPException(status_code=403, detail="Only tenant users can add or update project")
# name = data["name"]
# requirement = data["requirement"]
# start_time = data["start_time"]
# deadline = data["deadline"]
# estimators = data["estimator"]
# auditors = data["auditor"]
#
# #验证是否缺少必要参数
# if not name or not requirement or not start_time or not deadline or not estimators or not auditors:
# raise HTTPException(status_code=400, detail="Need more details")
#
# #验证开始时间是否早于结束时间
# if datetime.fromisoformat(start_time) > datetime.fromisoformat(deadline):
# raise HTTPException(status_code=400, detail="Start time must be before deadline")
#
# #验证评估审核员是否存在
# query_estimators = select(User).where(User.username.in_(estimators), User.tenant_id == current_user.tenant_id)
# users_estimators = session.exec(query_estimators).all()
# query_auditors = select(User).where(User.username.in_(auditors), User.tenant_id == current_user.tenant_id)
# users_auditors = session.exec(query_auditors).all()
# # 提取出所有查询到的
# existing_estimators = {user.username for user in users_estimators}
# existing_auditors = {user.username for user in users_auditors}
#
# # 验证是否所有的username都存在于数据库中
# missing_usernames = (set(auditors) | set(estimators)) - existing_estimators - existing_auditors
#
# if missing_usernames:
# raise HTTPException(status_code=404, detail=f"Missing usernames:{missing_usernames}")
#
# newProject = Project(
# name=name,
# requirement=requirement,
# start_time=start_time,
# deadline=deadline,
# owner_id = current_user.tenant_id,
# )
# session.add(newProject)
# session.commit()
# session.refresh(newProject)
#
# return {"newProject": newProject,
# "refreshProject.id": newProject.id,
# }
@router.post("/api/s1/project") @router.post("/api/s1/project")
async def create_project(data: dict, session: SessionDep): async def create_project(data: dict, session: SessionDep):
project_id = data.get("project_id") project_id = data.get("project_id")
@ -160,6 +111,35 @@ async def create_project(data: dict, session: SessionDep):
session.commit() session.commit()
session.refresh(project) session.refresh(project)
return {"newProject": project, return {"message": "Added or updated successfully",
"refreshProject.id": project.id, "information": project,
} }
#删除项目
@router.delete("/api/s1/project")
async def delete_project(data : dict, session: SessionDep):
project_id = data.get("project_id")
# 权限检查:只有管理员才可以删除项目
# if current_user.role != 1:
# raise HTTPException(status_code=403, detail="Only admin users can delete projects")
if not project_id:
raise HTTPException(status_code=400, detail="Project ID is required")
# 查找项目
project = session.exec(
select(Project).where(Project.id == project_id)).first()
if not project:
raise HTTPException(status_code=404,
detail="Project not found or you do not have permission to delete this project")
# 删除与项目相关的用户链接
# 先清除现有的关联
stmt = delete(ProjectUserLink).where(ProjectUserLink.project_id == project_id)
session.execute(stmt)
# 删除项目
session.delete(project)
session.commit()
return {"detail": "Project deleted successfully"}