127 lines
4.6 KiB
Python
127 lines
4.6 KiB
Python
from typing import Any, List
|
|
|
|
from fastapi import APIRouter, Body, Depends, HTTPException, Request
|
|
from sqlalchemy.orm import Session
|
|
|
|
import crud, models, schemas
|
|
from api import deps
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get('/')
|
|
def read_dashboard(project_id: int = Depends(deps.check_project),
|
|
db: Session = Depends(deps.get_db),
|
|
current_user: models.User = Depends(deps.get_current_active_user)
|
|
):
|
|
dashboard = crud.authority.get_my_dashboard(db=db, project_id=project_id, user_id=current_user.id)
|
|
return dashboard
|
|
|
|
|
|
# 新建看板
|
|
@router.post("/create-dashboard")
|
|
def create_dashboard(dashboard_in: schemas.DashboardIn,
|
|
db: Session = Depends(deps.get_db),
|
|
current_user: models.User = Depends(deps.get_current_active_user)) -> Any:
|
|
user_id = current_user.id
|
|
tree = deps.check_tree(db=db, **dashboard_in.dict(), user_id=user_id)
|
|
dashboard = crud.dashboard.create_with_dashboard(db=db, obj_in=schemas.DashboardCreate(**dashboard_in.dict()),
|
|
user_id=current_user.id,
|
|
)
|
|
|
|
# 自己创建的拥有权限
|
|
crud.authority.create_with_authority(db=db, obj_in=schemas.AuthorityCreate(
|
|
dashboard_id=dashboard.id,
|
|
project_id=tree.project_id,
|
|
authority='rw',
|
|
space_id=tree.space_id,
|
|
folder_id=tree.folder_id
|
|
), user_id=user_id)
|
|
|
|
return {"msg": "新建成功", 'code': 0}
|
|
|
|
|
|
# 删除看板
|
|
@router.post("/delete-dashboard")
|
|
def create_dashboard(dashboard_del: schemas.DashboardDelete,
|
|
db: Session = Depends(deps.get_db),
|
|
current_user: models.User = Depends(deps.get_current_active_user)) -> Any:
|
|
"""
|
|
只能删除自己创建的 会级联删除权限表
|
|
:param dashboard_del:
|
|
:param db:
|
|
:param current_user:
|
|
:return:
|
|
"""
|
|
user_id = current_user.id
|
|
dashboard = crud.dashboard.delete_my(db, id=dashboard_del.id, user_id=user_id)
|
|
|
|
|
|
return {"msg": "删除成功", 'code': 0, 'data': dashboard}
|
|
|
|
|
|
@router.post("/create-folder")
|
|
def create_folder(folder_in: schemas.FolderIn,
|
|
db: Session = Depends(deps.get_db),
|
|
current_user: models.User = Depends(deps.get_current_active_user)) -> Any:
|
|
user_id = current_user.id
|
|
tree = deps.check_tree(db, **folder_in.dict(), user_id=user_id)
|
|
folder = crud.folder.create_with_folder(db=db, obj_in=schemas.FolderCreate(**folder_in.dict()),
|
|
user_id=current_user.id)
|
|
# 自己创建的拥有权限
|
|
crud.authority.create_with_authority(db=db, obj_in=schemas.AuthorityCreate(
|
|
project_id=tree.project_id,
|
|
authority='rw',
|
|
space_id=tree.space_id,
|
|
folder_id=folder.id
|
|
), user_id=user_id)
|
|
return {"msg": "新建成功", 'code': 0}
|
|
|
|
|
|
# 删除文件夹
|
|
@router.post("/delete-folder")
|
|
def delete_folder(folder_del: schemas.FolderDelete,
|
|
db: Session = Depends(deps.get_db),
|
|
current_user: models.User = Depends(deps.get_current_active_user)) -> Any:
|
|
"""
|
|
只能删除自己创建的 会级联删除权限表
|
|
:param dashboard_del:
|
|
:param db:
|
|
:param current_user:
|
|
:return:
|
|
"""
|
|
user_id = current_user.id
|
|
folder = crud.folder.delete_my(db, id=folder_del.id, user_id=user_id)
|
|
|
|
return {"msg": "删除成功", 'code': 0, 'data': folder}
|
|
|
|
|
|
@router.post("/create-space")
|
|
def create_space(space_in: schemas.SpaceIn,
|
|
db: Session = Depends(deps.get_db),
|
|
current_user: models.User = Depends(deps.get_current_active_user)) -> Any:
|
|
user_id = current_user.id
|
|
tree = deps.check_tree(db, **space_in.dict(), user_id=user_id)
|
|
space = crud.space.create_with_space(db=db, obj_in=schemas.SpaceCreate(**space_in.dict()), user_id=user_id)
|
|
# 自己创建的拥有权限
|
|
crud.authority.create_with_authority(db=db, obj_in=schemas.AuthorityCreate(
|
|
project_id=tree.project_id,
|
|
authority='rw',
|
|
space_id=space.id,
|
|
), user_id=current_user.id)
|
|
return {"msg": "新建成功", 'code': 0}
|
|
|
|
|
|
# 删除文件夹
|
|
@router.post("/delete-space")
|
|
def delete_space(space_del: schemas.SpaceDelete,
|
|
db: Session = Depends(deps.get_db),
|
|
current_user: models.User = Depends(deps.get_current_active_user)) -> Any:
|
|
"""
|
|
只能删除自己创建的 会级联删除权限表
|
|
"""
|
|
user_id = current_user.id
|
|
space = crud.space.delete_my(db, id=space_del.id, user_id=user_id)
|
|
|
|
return {"msg": "删除成功", 'code': 0, 'data': space}
|