修了些项目管理的bug,完成了不带权限验证的列举所有租户
This commit is contained in:
parent
0594809a48
commit
31b74e8fff
@ -43,8 +43,8 @@ async def create_project(data: dict, session: SessionDep):
|
|||||||
raise HTTPException(status_code=400, detail="Need more name/requirement/start_time/deadline")
|
raise HTTPException(status_code=400, detail="Need more name/requirement/start_time/deadline")
|
||||||
|
|
||||||
# 验证开始时间是否早于结束时间
|
# 验证开始时间是否早于结束时间
|
||||||
start_time = datetime.strptime(start_time_str, "%Y-%m-%d")
|
start_time = datetime.strptime(start_time_str, "%Y-%m-%dT%H:%M:%S")
|
||||||
deadline = datetime.strptime(deadline_str, "%Y-%m-%d")
|
deadline = datetime.strptime(deadline_str, "%Y-%m-%dT%H:%M:%S")
|
||||||
if start_time > deadline:
|
if start_time > deadline:
|
||||||
raise HTTPException(status_code=400, detail="Start time must be before deadline")
|
raise HTTPException(status_code=400, detail="Start time must be before deadline")
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ async def create_project(data: dict, session: SessionDep):
|
|||||||
requirement=requirement,
|
requirement=requirement,
|
||||||
start_time=start_time,
|
start_time=start_time,
|
||||||
deadline=deadline,
|
deadline=deadline,
|
||||||
owner_id=1 # 假设owner_id是1
|
owner_id=1 # 假设owner_id是1,之后应该是通过token获取owner_id吧
|
||||||
)
|
)
|
||||||
session.add(project)
|
session.add(project)
|
||||||
|
|
||||||
|
|||||||
@ -20,11 +20,102 @@ router = APIRouter()
|
|||||||
# return "hello"
|
# return "hello"
|
||||||
|
|
||||||
# 列举所有租户
|
# 列举所有租户
|
||||||
|
from fastapi import HTTPException, Response
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
from models import Tenant, User # 假设你已导入 Tenant 和 User 模型
|
||||||
|
from dependencies import SessionDep # 假设 SessionDep 是数据库会话的依赖
|
||||||
|
|
||||||
|
|
||||||
|
#列举所有租户
|
||||||
|
from fastapi import HTTPException, Response
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
from models import Tenant, User # 假设你已导入 Tenant 和 User 模型
|
||||||
|
from dependencies import SessionDep # 假设 SessionDep 是数据库会话的依赖
|
||||||
|
|
||||||
|
|
||||||
@router.get("/api/s1/tenant")
|
@router.get("/api/s1/tenant")
|
||||||
async def get_tenant(response: Response, session: SessionDep):
|
async def get_tenant(response: Response, session: SessionDep):
|
||||||
tenant = session.query(Tenant).filter().all()
|
tenants = session.query(Tenant).all() # 获取所有租户
|
||||||
if not tenant:
|
if not tenants:
|
||||||
raise HTTPException(status_code=404, detail="Tenant not found")
|
raise HTTPException(status_code=404, detail="No tenants found")
|
||||||
return {"tenant": tenant}
|
|
||||||
|
tenant_data = []
|
||||||
|
for tenant in tenants:
|
||||||
|
# 获取该租户中 role=1 的第一个用户(如果存在)
|
||||||
|
tenant_user = next((user for user in tenant.users if user.role == 1), None)
|
||||||
|
|
||||||
|
# 获取该租户中除了 role=1 以外的用户数量
|
||||||
|
user_num = len([user for user in tenant.users if user.role != 1])
|
||||||
|
|
||||||
|
# 构建租户信息
|
||||||
|
tenant_info = {
|
||||||
|
"name": tenant.name,
|
||||||
|
"username": tenant_user.username if tenant_user else None, # 如果找到 role=1 的用户,返回其 username
|
||||||
|
"user_num": user_num # 除去 role=1 的用户数量
|
||||||
|
}
|
||||||
|
|
||||||
|
tenant_data.append(tenant_info)
|
||||||
|
|
||||||
|
return {"tenants": tenant_data}
|
||||||
|
|
||||||
# 新增和修改租户
|
# 新增和修改租户
|
||||||
|
@router.post("/api/s1/tenant")
|
||||||
|
async def create_tenant(data: dict, session: SessionDep):
|
||||||
|
tenant_id = data.get("tenant_id")
|
||||||
|
name = data["name"]
|
||||||
|
username = data["username"]
|
||||||
|
password = data["password"]
|
||||||
|
|
||||||
|
# 验证是否缺少必要参数
|
||||||
|
if not name:
|
||||||
|
raise HTTPException(status_code=400, detail="Need to provide name")
|
||||||
|
|
||||||
|
|
||||||
|
# 更新租户还是新增租户
|
||||||
|
if tenant_id:
|
||||||
|
# 查找现有租户
|
||||||
|
tenant = session.get(Tenant, tenant_id)
|
||||||
|
if not tenant:
|
||||||
|
raise HTTPException(status_code=404, detail="Tenant not found")
|
||||||
|
|
||||||
|
# 更新项目内容
|
||||||
|
tenant.name = name
|
||||||
|
else:
|
||||||
|
# 新增项目
|
||||||
|
project = Project(
|
||||||
|
name=name,
|
||||||
|
requirement=requirement,
|
||||||
|
start_time=start_time,
|
||||||
|
deadline=deadline,
|
||||||
|
owner_id=1 # 假设owner_id是1,之后应该是通过token获取owner_id吧
|
||||||
|
)
|
||||||
|
session.add(project)
|
||||||
|
|
||||||
|
# 处理项目和用户的关联
|
||||||
|
# 先清除现有的关联
|
||||||
|
# 生成删除语句并执行
|
||||||
|
print(project_id) #测试用
|
||||||
|
stmt = delete(ProjectUserLink).where(ProjectUserLink.project_id == project.id)
|
||||||
|
session.execute(stmt)
|
||||||
|
session.commit() # 提交事务
|
||||||
|
|
||||||
|
# 重新建立与评估员和审核员的关系
|
||||||
|
for username in estimators:
|
||||||
|
user = next((user for user in users_estimators if user.username == username), None)
|
||||||
|
if user:
|
||||||
|
project_user_link = ProjectUserLink(project_id=project.id, user_id=user.id)
|
||||||
|
session.add(project_user_link)
|
||||||
|
|
||||||
|
for username in auditors:
|
||||||
|
user = next((user for user in users_auditors if user.username == username), None)
|
||||||
|
if user:
|
||||||
|
project_user_link = ProjectUserLink(project_id=project.id, user_id=user.id)
|
||||||
|
session.add(project_user_link)
|
||||||
|
|
||||||
|
# 提交事务
|
||||||
|
session.commit()
|
||||||
|
session.refresh(project)
|
||||||
|
|
||||||
|
return {"message": "Added or updated successfully",
|
||||||
|
"information": project,
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user