栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Django-Talent系统】管控批量上传的权限问题--20220609

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Django-Talent系统】管控批量上传的权限问题--20220609

效果:管控批量上传的权限问题

根据用户具有的查询权限,来避免管理员改到别的Site的学员资料。

代码views.py

关键在于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基础人事资料
{% csrf_token %} {{uf.as_p}}
{% endblock %}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/961219.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号