根据用户具有的查询权限,来避免管理员改到别的Site的学员资料。
关键在于def EmployeeUser_queryset(request)返回用户具有的查询权限
# 定义返回EmployeeUser查询权限的方法
def EmployeeUser_queryset(request):
#查看用户权限
u = User.objects.get(username=request.user)
EmployeeUser_all = EmployeeUser.objects.all()
#如果是超级管理员,就全部查看;否则就按部门查看和role
if u.is_superuser:
EmployeeUser_self1 = EmployeeUser_all
elif u.last_name == 'HR':
#如果是一般管理员,根据权限来查看的数据
EmployeeUser_self1 = EmployeeUser_all.filter(site=u.first_name)
else:
# 非管理员默认只能查自己工号的数据
EmployeeUser_self1 = EmployeeUser_all.filter(Q(employee_id=request.user.employeeuser.employee_id))
return EmployeeUser_self1
# 批量上传employee HR维护的部分(主要是training)
@login_required
def upload_for_training(request):
if request.method == "POST": #验证POST
uf = UploadEmployeeForm(request.POST,request.FILES) #.post是获取post返回字段,.FILES是获取返回的文件
print(uf)
print(request.FILES['uploadfile'])
print('-----------')
message = []
if uf.is_valid(): #判断前台返回的表单是否为有效的类型
wb = load_workbook(filename=request.FILES['uploadfile'])
print(wb)
ws = wb.get_sheet_names()
ws = wb.get_sheet_by_name(ws[0])
max_row = ws.max_row
for row in range(2,max_row+1):
#获取表单元素
employee_id = ws.cell(row=row,column=1).value
turnoverrate_content = ws.cell(row=row,column=2).value
turnoverrate_finished_or_not = ws.cell(row=row,column=3).value
turnoverrate_finished_date = ws.cell(row=row,column=4).value
KPI_finished_or_not = ws.cell(row=row,column=5).value
KPI_finished_date = ws.cell(row=row,column=6).value
workshop_finished_or_not = ws.cell(row=row,column=7).value
workshop_finished_date = ws.cell(row=row,column=8).value
leadership_case_finished_or_not = ws.cell(row=row,column=9).value
leadership_case_reward_or_not = ws.cell(row=row,column=10).value
leadership_case_finished_date = ws.cell(row=row,column=11).value
ddi_training_status = ws.cell(row=row,column=12).value
ddi_training_finished_or_not = ws.cell(row=row,column=13).value
ddi_training_finished_date = ws.cell(row=row,column=14).value
manager_training_finished_or_not = ws.cell(row=row,column=15).value
manager_training_finished_date = ws.cell(row=row,column=16).value
# 写入数据库
my_upload_employee = EmployeeUser.objects.filter(employee_id=employee_id) & EmployeeUser_queryset(request)
if my_upload_employee:
my_upload_employee = my_upload_employee.first()
my_upload_employee.turnoverrate_content = turnoverrate_content
my_upload_employee.turnoverrate_finished_or_not = turnoverrate_finished_or_not
my_upload_employee.turnoverrate_finished_date = turnoverrate_finished_date
my_upload_employee.KPI_finished_or_not = KPI_finished_or_not
my_upload_employee.KPI_finished_date = KPI_finished_date
my_upload_employee.workshop_finished_or_not = workshop_finished_or_not
my_upload_employee.workshop_finished_date = workshop_finished_date
my_upload_employee.leadership_case_finished_or_not = leadership_case_finished_or_not
my_upload_employee.leadership_case_reward_or_not = leadership_case_reward_or_not
my_upload_employee.leadership_case_finished_date = leadership_case_finished_date
my_upload_employee.ddi_training_status = ddi_training_status
my_upload_employee.ddi_training_finished_or_not = ddi_training_finished_or_not
my_upload_employee.ddi_training_finished_date = ddi_training_finished_date
my_upload_employee.manager_training_finished_or_not = manager_training_finished_or_not
my_upload_employee.manager_training_finished_date = manager_training_finished_date
my_upload_employee.save()
print(my_upload_employee,'上传成功')
else:
print(my_upload_employee,'上传失败')
message_str = str(employee_id)+'-上传失败;'
message.append(message_str)
pass
return render(request,'successful.html',locals())
else:
uf = UploadEmployeeForm()
return render(request,'upload_for_training.html',{'uf':uf})
upload_for_people_data.html
{% block body_block %}
批量更新:HR基础人事资料
{% endblock %}



