权限
This commit is contained in:
parent
b4ed73eb64
commit
0513f46d99
@ -89,6 +89,7 @@ async def sort(
|
||||
|
||||
@router.post("/copy")
|
||||
async def copy(
|
||||
request: Request,
|
||||
data_in: schemas.DashboardCopy,
|
||||
db: AsyncIOMotorDatabase = Depends(get_database),
|
||||
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
||||
@ -101,6 +102,7 @@ async def copy(
|
||||
dest_default_space = await crud.space.find_one(db, {'project_id': dest_project_id, 'name': '默认空间'},
|
||||
{'_id': True})
|
||||
dest_space_id = dest_default_space.get('_id')
|
||||
user_id = request.user.id
|
||||
# 创建默认空间
|
||||
if not dest_space_id:
|
||||
default_space = await crud.space.create(db,
|
||||
@ -113,6 +115,54 @@ async def copy(
|
||||
item['project_id'] = dest_project_id
|
||||
item['pid'] = dest_space_id
|
||||
item['cat'] = 'space'
|
||||
item['user_id'] = user_id
|
||||
item['_id'] = get_uid()
|
||||
for report in item['reports']:
|
||||
report_id = report['report_id']
|
||||
new_report = await crud.report.get(db, report_id)
|
||||
new_report_id = get_uid()
|
||||
report['report_id'] = new_report_id
|
||||
new_report['user_id'] = user_id
|
||||
new_report['_id'] = new_report_id
|
||||
new_report['project_id'] = dest_project_id
|
||||
try:
|
||||
await crud.report.insert_one(db, new_report)
|
||||
except:
|
||||
exists_report = await crud.report.find_one(db, {'project_id': item['project_id'],
|
||||
'user_id': item['user_id'], 'name': report['name']})
|
||||
report['report_id'] = exists_report['_id']
|
||||
try:
|
||||
await crud.dashboard.update_one(db,
|
||||
{'project_id': item['project_id'], 'name': item['name'],
|
||||
'user_id': item['user_id']}, {'$set': item},
|
||||
upsert=True)
|
||||
except:
|
||||
pass
|
||||
|
||||
return schemas.Msg(code=0, msg='ok', data='复制成功')
|
||||
|
||||
|
||||
@router.post("/copy_to_my_space")
|
||||
async def copy(
|
||||
request: Request,
|
||||
data_in: schemas.DashboardCopyToSpace,
|
||||
db: AsyncIOMotorDatabase = Depends(get_database),
|
||||
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
||||
) -> schemas.Msg:
|
||||
"""
|
||||
复制到自己空间
|
||||
"""
|
||||
# 检查是否存在默认空间 不存在就创建
|
||||
dest_project_id = data_in.project_id
|
||||
dest_space_id = data_in.dest_space_id
|
||||
user_id = request.user.id
|
||||
|
||||
dashboards = await crud.dashboard.find_many(db, {'_id': {'$in': data_in.source_ids}}, {'_id': False})
|
||||
for item in dashboards:
|
||||
item['project_id'] = dest_project_id
|
||||
item['pid'] = dest_space_id
|
||||
item['user_id'] = user_id
|
||||
item['cat'] = 'space'
|
||||
item['_id'] = get_uid()
|
||||
for report in item['reports']:
|
||||
report_id = report['report_id']
|
||||
@ -120,6 +170,7 @@ async def copy(
|
||||
new_report_id = get_uid()
|
||||
report['report_id'] = new_report_id
|
||||
new_report['_id'] = new_report_id
|
||||
new_report['user_id'] = user_id
|
||||
new_report['project_id'] = dest_project_id
|
||||
try:
|
||||
await crud.report.insert_one(db, new_report)
|
||||
@ -162,7 +213,8 @@ async def edit_report(data_in: schemas.EditReport,
|
||||
"""编辑报表"""
|
||||
|
||||
res = await crud.dashboard.update_one(db, {'_id': data_in.id, 'reports.report_id': data_in.report.report_id},
|
||||
{'$set': {f'reports.$.{k}':v for k,v in data_in.report.dict(skip_defaults=True).items()}})
|
||||
{'$set': {f'reports.$.{k}': v for k, v in
|
||||
data_in.report.dict(skip_defaults=True).items()}})
|
||||
|
||||
return schemas.Msg(code=0, msg='ok', data='ok')
|
||||
|
||||
|
@ -38,10 +38,10 @@ async def edit(
|
||||
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
||||
) -> schemas.Msg:
|
||||
"""编辑报表"""
|
||||
|
||||
await crud.report.update_one(db, {'_id': data_in.report_id},
|
||||
{'$set': {'query': data_in.query, 'name': data_in.name, 'desc': data_in.desc}})
|
||||
|
||||
res = await crud.report.update_one(db, {'_id': data_in.report_id, 'user_id': request.user.id},
|
||||
{'$set': {'query': data_in.query, 'name': data_in.name, 'desc': data_in.desc}})
|
||||
if not res.modified_count:
|
||||
return schemas.Msg(code=-1, msg='只能报表所有者编辑')
|
||||
return schemas.Msg(code=0, msg='ok', data='编辑成功')
|
||||
|
||||
|
||||
@ -74,11 +74,13 @@ async def read_report(
|
||||
db: AsyncIOMotorDatabase = Depends(get_database),
|
||||
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
||||
) -> Any:
|
||||
"""获取已建报表"""
|
||||
"""获取已建报表 属于自己的"""
|
||||
ext_where = dict()
|
||||
dashboard = dict()
|
||||
if data_in.report_id:
|
||||
ext_where = {'_id': {'$in': data_in.report_id}}
|
||||
else:
|
||||
ext_where['user_id'] = request.user.id
|
||||
if data_in.dashboard_id:
|
||||
dashboard = await crud.dashboard.get(db, id=data_in.dashboard_id)
|
||||
# projection = {'query': False}
|
||||
|
@ -75,6 +75,10 @@ class DashboardCopy(BaseModel):
|
||||
source_ids: List[str]
|
||||
dest_project_id: str
|
||||
|
||||
class DashboardCopyToSpace(BaseModel):
|
||||
source_ids: List[str]
|
||||
project_id: str
|
||||
dest_space_id: str
|
||||
|
||||
class AddReport(DBBase):
|
||||
report_ids: List[Report]
|
||||
|
Loading…
Reference in New Issue
Block a user