This commit is contained in:
Administrator 2023-07-03 17:04:39 +08:00
parent edf48c0825
commit 32a9844aa3
1 changed files with 26 additions and 31 deletions

View File

@ -44,40 +44,35 @@ def daily_query(db: Session, params: DailyQuery, token_data: TokenData) -> [int]
# 有日报管理权限的可以查看所有 10
# 所有部门动态查看 2
# 动态权限设为了董监高的话,只有自己和董监高可以看
if '10' not in auth_list and '2' not in auth_list and params.type == DailyTypeEnum.部门子公司日报:
if '10' not in auth_list and '2' not in auth_list:
has_auth = [int(item) for item in auth_list if item in ['17', '18']]
departments = [int(item) for item in department.split(",")]
# 筛选能有权限看的日报
query = query.filter(
or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
Daily.required_auth == None, Daily.required_auth == '',
Daily.fill_user == token_data.email
))
if params.type == DailyTypeEnum.部门子公司日报:
业务部门 = []
# 如果是只能看自己日报的,在业务部门内只能看自己日报
if '20' in auth_list:
for dp in db.query(Department).filter(Department.id.in_(departments)):
if dp.type.value == '业务部门':
业务部门.append(dp.id)
业务部门 = []
# 如果是只能看自己日报的,在业务部门内只能看自己日报
if '20' in auth_list:
for dp in db.query(Department).filter(Department.id.in_(departments)):
if dp.type.value == '业务部门':
业务部门.append(dp.id)
# query = query.filter(or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
# Daily.required_auth._in['', None]))
# 能看到自己部门所有动态
# query = query.filter(or_(
# Daily.department.in_(departments),
# and_(Daily.department.not_in(departments),
# # 日报没有权限或者这个人拥有日报查阅所需的权限
# or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
# not Daily.required_auth)
# )))
query_department = [d for d in departments if d not in 业务部门]
if query_department:
query = query.filter(or_(Daily.department.in_(query_department),
)).filter(
or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
Daily.required_auth == None, Daily.required_auth == '',
Daily.fill_user == token_data.email
)
)
else:
query = query.filter(Daily.fill_user == token_data.email)
# 能看到自己动态 ,但看不到同部门的保密日报
query_department = [d for d in departments if d not in 业务部门]
if query_department:
query = query.filter(or_(Daily.department.in_(query_department),
)).filter(
or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
Daily.required_auth == None, Daily.required_auth == '',
Daily.fill_user == token_data.email
)
)
else:
query = query.filter(Daily.fill_user == token_data.email)
# 能看到自己动态 ,但看不到同部门的保密日报
for key, value in params_dict.items():
if value in ['', None]: