This commit is contained in:
wuaho 2021-08-30 14:58:01 +08:00
parent b2ffc0a8b4
commit 25a47dc586
4 changed files with 30 additions and 11 deletions

View File

@ -47,10 +47,10 @@ async def get_permissions_for_user_in_domain(
""" """
data = casbin_enforcer.get_permissions_for_user_in_domain(data_in.role_id, data_in.game) data = casbin_enforcer.get_permissions_for_user_in_domain(data_in.role_id, data_in.game)
path_ids = {i[2] for i in data} paths = {i[2] for i in data}
all_api = await crud.api_list.all_api(db) all_api = await crud.api_list.all_api(db)
for item in all_api: for item in all_api:
if item['_id'] in path_ids: if item['path'] in paths:
item['is_authz'] = True item['is_authz'] = True
else: else:
item['is_authz'] = False item['is_authz'] = False

View File

@ -66,10 +66,13 @@ async def read_project(request: Request,
current_user: schemas.UserDB = Depends(deps.get_current_user) current_user: schemas.UserDB = Depends(deps.get_current_user)
): ):
"""查看自己拥有的项目""" """查看自己拥有的项目"""
if request.user.username == 'root':
resp = await crud.project.all_game(db)
else:
game_list = casbin_enforcer.get_domains_for_user(request.user.username)
resp = await crud.project.get_my_game(db, game_list)
res = await crud.project.read_project(db, username=request.user.username) return schemas.Msg(code=0, msg='ok', data=resp)
return schemas.Msg(code=0, msg='ok', data=res)
@router.get("/detail") @router.get("/detail")
@ -170,7 +173,7 @@ async def members(request: Request,
names.append(item['username']) names.append(item['username'])
role_ids.append(item['role_id']) role_ids.append(item['role_id'])
users = await crud.user.get_by_users(db, {'name': {'$in': names}}) users = await crud.user.get_by_users(db, {'name': {'$in': names}})
roles = await crud.role.find_ids(db,role_ids) roles = await crud.role.find_ids(db, role_ids)
users = {item.name: item.dict() for item in users.data} users = {item.name: item.dict() for item in users.data}
roles = {item['_id']: item['name'] for item in roles} roles = {item['_id']: item['name'] for item in roles}
res = [] res = []

View File

@ -119,7 +119,8 @@ async def event_model(
'sum': [], 'sum': [],
'avg': [], 'avg': [],
'event_name': item['event_name'], 'event_name': item['event_name'],
'format': item['format'] 'format': item['format'],
'last_value': 0
} }
sql = item['sql'] sql = item['sql']
groupby = item['groupby'] groupby = item['groupby']
@ -135,8 +136,12 @@ async def event_model(
# df_group.reset_index(drop=True, inplace=True) # df_group.reset_index(drop=True, inplace=True)
q['groups'].append(groupby) q['groups'].append(groupby)
q['values'].append(df['values'].to_list()) q['values'].append(df['values'].to_list())
q['sum'].append(int(df['values'].sum())) q['sum'].append(round(df['values'].sum(),2))
q['avg'].append(round(df['values'].mean(), 2)) q['avg'].append(round(df['values'].mean(), 2))
for last_value in df['values'].values[::-1]:
if last_value > 0:
q['last_value'] = int(last_value)
break
if groupby: if groupby:
q['date_range'] = [f'{i}' for i in df.set_index(groupby).index] q['date_range'] = [f'{i}' for i in df.set_index(groupby).index]
else: else:
@ -162,6 +167,10 @@ async def event_model(
q['values'].append(df_group['values'].to_list()) q['values'].append(df_group['values'].to_list())
q['sum'].append(int(df_group['values'].sum())) q['sum'].append(int(df_group['values'].sum()))
q['avg'].append(int(df_group['values'].mean())) q['avg'].append(int(df_group['values'].mean()))
for last_value in df['values'].values[::-1]:
if last_value > 0:
q['last_value'] = last_value
break
else: else:
# 无分组 # 无分组
@ -175,7 +184,11 @@ async def event_model(
if len(df) >= 8: if len(df) >= 8:
q['wow'] = division((df.iloc[-1, 1] - df.iloc[-8, 1]) * 100 / df.iloc[-8, 1], 2) or 0 q['wow'] = division((df.iloc[-1, 1] - df.iloc[-8, 1]) * 100 / df.iloc[-8, 1], 2) or 0
q['values'].append(df['values'].to_list()) q['values'].append(df['values'].to_list())
q['sum'].append(int(df['values'].sum())) for last_value in df['values'].values[::-1]:
if last_value > 0:
q['last_value'] = last_value
break
q['sum'].append(round(df['values'].sum(),2))
q['avg'].append(round(df['values'].mean(), 2)) q['avg'].append(round(df['values'].mean(), 2))
if item['time_particle'] in ('P1D', 'P1W'): if item['time_particle'] in ('P1D', 'P1W'):
q['date_range'] = [d.strftime('%Y-%m-%d') for d in q['date_range']] q['date_range'] = [d.strftime('%Y-%m-%d') for d in q['date_range']]
@ -543,7 +556,7 @@ async def scatter_model(
if interval_type == 'def' and analysis == 'number_of_days': if interval_type == 'def' and analysis == 'number_of_days':
resp = {'list': {}} resp = {'list': {}}
for key, tmp_df in df.groupby('date'): for key, tmp_df in df.groupby('date'):
total = int(tmp_df['values'].sum()) total = round(tmp_df['values'].sum(),2)
resp['list'][key.strftime('%Y-%m-%d')] = {'n': total, 'total': total, 'p': 100} resp['list'][key.strftime('%Y-%m-%d')] = {'n': total, 'total': total, 'p': 100}
return schemas.Msg(code=0, msg='ok', data=resp) return schemas.Msg(code=0, msg='ok', data=resp)

View File

@ -17,8 +17,11 @@ class CRUDProject(CRUDBase):
) )
return await db[self.coll_name].insert_one(db_obj.dict(by_alias=True)) return await db[self.coll_name].insert_one(db_obj.dict(by_alias=True))
async def get_my_game(self, db, game_names: list):
return await self.find_many(db, {'game': {'$in': game_names}})
async def all_game(self, db: AsyncIOMotorDatabase): async def all_game(self, db: AsyncIOMotorDatabase):
return await self.find_many(db, {}, {'game': True, 'name': True, '_id': False}) return await self.find_many(db, {})
async def read_project(self, db: AsyncIOMotorDatabase, username: str, **kwargs): async def read_project(self, db: AsyncIOMotorDatabase, username: str, **kwargs):
return await self.read_have(db, username, **kwargs) return await self.read_have(db, username, **kwargs)