xbackend/api/api_v1/endpoints/dashboard.py
2021-04-30 18:52:30 +08:00

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}