修改 如果是只能看自己日报的,在业务部门内只能看自己日报
This commit is contained in:
parent
0d6e8d96ae
commit
a1aabeb081
|
@ -1,5 +1,7 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
from Models.DepartmentModel import Department
|
||||||
|
from Schemas.UserSchemas import TokenData
|
||||||
from sqlalchemy import func, or_, and_
|
from sqlalchemy import func, or_, and_
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from Models.DailyModel import Daily
|
from Models.DailyModel import Daily
|
||||||
|
@ -30,8 +32,10 @@ def daily_delete(db: Session, item_id):
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
|
||||||
def daily_query(db: Session, params: DailyQuery, department: str, auth: str = None) -> [int]:
|
def daily_query(db: Session, params: DailyQuery, token_data: TokenData) -> [int]:
|
||||||
print(params)
|
print(params)
|
||||||
|
department = token_data.department
|
||||||
|
auth = token_data.auth_data
|
||||||
params_dict = params.dict()
|
params_dict = params.dict()
|
||||||
query = db.query(Daily)
|
query = db.query(Daily)
|
||||||
db_model = Daily
|
db_model = Daily
|
||||||
|
@ -39,17 +43,37 @@ def daily_query(db: Session, params: DailyQuery, department: str, auth: str = No
|
||||||
auth_list = auth.split(',')
|
auth_list = auth.split(',')
|
||||||
# 有日报管理权限的可以查看所有 10
|
# 有日报管理权限的可以查看所有 10
|
||||||
# 所有部门动态查看 2
|
# 所有部门动态查看 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 and params.type == DailyTypeEnum.部门子公司日报:
|
||||||
has_auth = [int(item) for item in auth_list if item in ['17', '18']]
|
has_auth = [int(item) for item in auth_list if item in ['17', '18']]
|
||||||
|
departments = [int(item) for item in department.split(",")]
|
||||||
|
|
||||||
|
业务部门 = []
|
||||||
|
# 如果是只能看自己日报的,在业务部门内只能看自己日报
|
||||||
|
if '20' in auth_list:
|
||||||
|
for dp in db.query(Department).filter(Department.id.in_(departments)):
|
||||||
|
if dp.to_dict()['type'] == '业务部门':
|
||||||
|
业务部门.append(dp.id)
|
||||||
|
|
||||||
# query = query.filter(or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
|
# query = query.filter(or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
|
||||||
# Daily.required_auth._in['', None]))
|
# Daily.required_auth._in['', None]))
|
||||||
departments = [int(item) for item in department.split(",")]
|
|
||||||
query = query.filter(or_(Daily.department.in_(departments), and_(Daily.department.not_in(departments),
|
# 能看到自己部门所有动态
|
||||||
or_(*[func.find_in_set(str(item),
|
# query = query.filter(or_(
|
||||||
Daily.required_auth)
|
# Daily.department.in_(departments),
|
||||||
for item in has_auth],
|
# and_(Daily.department.not_in(departments),
|
||||||
not Daily.required_auth))))
|
# # 日报没有权限或者这个人拥有日报查阅所需的权限
|
||||||
|
# or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
|
||||||
|
# not Daily.required_auth)
|
||||||
|
# )))
|
||||||
|
# 能看到自己动态 ,但看不到同部门的保密日报
|
||||||
|
query = query.filter(or_(Daily.department.in_([departments for d in departments if d not in 业务部门]),
|
||||||
|
Daily.fill_user == token_data.email)).filter(
|
||||||
|
or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
|
||||||
|
Daily.required_auth.in_(['', None]),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
for key, value in params_dict.items():
|
for key, value in params_dict.items():
|
||||||
if key == 'department' and type(value) == list:
|
if key == 'department' and type(value) == list:
|
||||||
query = query.filter(Daily.department.in_(value))
|
query = query.filter(Daily.department.in_(value))
|
||||||
|
@ -89,6 +113,7 @@ def daily_query(db: Session, params: DailyQuery, department: str, auth: str = No
|
||||||
print(datetime.fromtimestamp(value[1] / 1000))
|
print(datetime.fromtimestamp(value[1] / 1000))
|
||||||
else:
|
else:
|
||||||
query = query.filter(getattr(db_model, key) == value)
|
query = query.filter(getattr(db_model, key) == value)
|
||||||
|
|
||||||
query = query.order_by(Daily.daily_time.desc())
|
query = query.order_by(Daily.daily_time.desc())
|
||||||
count = query.count()
|
count = query.count()
|
||||||
page = None
|
page = None
|
||||||
|
|
|
@ -94,7 +94,16 @@ def daily_query(req: DailySchemas.DailyQuery, db: Session = Depends(get_db),
|
||||||
# same_department = set([req.department]) < set([int(item) for item in token_data.department.split(',')])
|
# same_department = set([req.department]) < set([int(item) for item in token_data.department.split(',')])
|
||||||
# if same_department and not check_auth(token_data.auth_data, [3]):
|
# if same_department and not check_auth(token_data.auth_data, [3]):
|
||||||
# raise HTTPException(detail="没有本部门动态查看权限", status_code=305)
|
# raise HTTPException(detail="没有本部门动态查看权限", status_code=305)
|
||||||
count, items = DailyCrud.daily_query(db, req, token_data.department, token_data.auth_data)
|
count, items = DailyCrud.daily_query(db, req, token_data)
|
||||||
|
# new_items=[]
|
||||||
|
# for item in items:
|
||||||
|
# try:
|
||||||
|
# new_items.append(DailySchemas.DailyInfo(**item.to_dict()))
|
||||||
|
# except Exception as e:
|
||||||
|
# raise e
|
||||||
|
# print(e)
|
||||||
|
# print(item)
|
||||||
|
# print('xxxxx',item.to_dict())
|
||||||
items = [DailySchemas.DailyInfo(**item.to_dict()) for item in items]
|
items = [DailySchemas.DailyInfo(**item.to_dict()) for item in items]
|
||||||
return DailySchemas.DailyQueryRes(count=count, items=items)
|
return DailySchemas.DailyQueryRes(count=count, items=items)
|
||||||
|
|
||||||
|
@ -153,6 +162,8 @@ def daily_export(req: QueryParams, db: Session = Depends(get_db)):
|
||||||
|
|
||||||
@router.post("/daily_export_to_pdf", summary="每日运行日报导出")
|
@router.post("/daily_export_to_pdf", summary="每日运行日报导出")
|
||||||
def daily_export_to_pdf(req: DailySchemas.DailyExportToPdfReq, db: Session = Depends(get_db)):
|
def daily_export_to_pdf(req: DailySchemas.DailyExportToPdfReq, db: Session = Depends(get_db)):
|
||||||
|
req.day = req.day + datetime.timedelta(days=1)
|
||||||
|
print(req)
|
||||||
query = db.query(Daily).filter(cast(Daily.daily_time, DATE) == cast(req.day, DATE))
|
query = db.query(Daily).filter(cast(Daily.daily_time, DATE) == cast(req.day, DATE))
|
||||||
query = query.order_by(Daily.daily_time.desc())
|
query = query.order_by(Daily.daily_time.desc())
|
||||||
department_name_dic = {item.id: item.name for item in db.query(Department).all()}
|
department_name_dic = {item.id: item.name for item in db.query(Department).all()}
|
||||||
|
@ -194,6 +205,8 @@ def daily_export_to_pdf(req: DailySchemas.DailyExportToPdfReq, db: Session = Dep
|
||||||
}
|
}
|
||||||
|
|
||||||
def format_conversion(string):
|
def format_conversion(string):
|
||||||
|
if not string:
|
||||||
|
return ""
|
||||||
parts = string.split(";")
|
parts = string.split(";")
|
||||||
formatted_parts = []
|
formatted_parts = []
|
||||||
for part in parts:
|
for part in parts:
|
||||||
|
@ -304,8 +317,9 @@ def daily_export_to_pdf(req: DailySchemas.DailyExportToPdfReq, db: Session = Dep
|
||||||
doc_path = os.path.join(os.getcwd(), 'Config', 'daily_out_template.docx')
|
doc_path = os.path.join(os.getcwd(), 'Config', 'daily_out_template.docx')
|
||||||
doc = DocxTemplate(doc_path)
|
doc = DocxTemplate(doc_path)
|
||||||
doc.render(merged_dict)
|
doc.render(merged_dict)
|
||||||
today = datetime.date.today()
|
# today = datetime.date.today()
|
||||||
date_string = today.strftime('%Y%m%d')
|
|
||||||
|
date_string = req.day.strftime('%Y%m%d')
|
||||||
file_path = os.path.join(os.getcwd(), 'static_data', 'daily_out_temp', '运行日报{}.docx'.format(date_string))
|
file_path = os.path.join(os.getcwd(), 'static_data', 'daily_out_temp', '运行日报{}.docx'.format(date_string))
|
||||||
doc.save(file_path)
|
doc.save(file_path)
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ class DepartmentInfo(BaseModel):
|
||||||
belong: Optional[int]
|
belong: Optional[int]
|
||||||
name: str
|
name: str
|
||||||
type: Optional[DepartmentTypeEnum]
|
type: Optional[DepartmentTypeEnum]
|
||||||
sub_type:Optional[str]
|
sub_type: Optional[str]
|
||||||
|
|
||||||
|
|
||||||
class PostInfo(BaseModel):
|
class PostInfo(BaseModel):
|
||||||
|
@ -84,8 +84,8 @@ class UserInfo(BaseModel):
|
||||||
post: str
|
post: str
|
||||||
phone: Optional[str]
|
phone: Optional[str]
|
||||||
manage_departments: Optional[str]
|
manage_departments: Optional[str]
|
||||||
department: str
|
department: Optional[str]
|
||||||
registered: bool
|
registered: Optional[bool]
|
||||||
|
|
||||||
|
|
||||||
class UserFullInfo(BaseModel):
|
class UserFullInfo(BaseModel):
|
||||||
|
|
|
@ -10,6 +10,7 @@ user = "root"
|
||||||
password = "123456"
|
password = "123456"
|
||||||
host = "127.0.0.1"
|
host = "127.0.0.1"
|
||||||
db = 'daily'
|
db = 'daily'
|
||||||
|
db = 'daily_test'
|
||||||
|
|
||||||
# host = "139.9.249.34"
|
# host = "139.9.249.34"
|
||||||
# post = "3306"
|
# post = "3306"
|
||||||
|
|
Loading…
Reference in New Issue