| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426 |
- # -*- coding: utf-8 -*-
- from django.shortcuts import render
- from django.views.generic import ListView
- from apps.AppInfoManage.models import MyUser, User_Log, Equip, Group
- from django import forms
- from django.db.models import Q
- import re
- import datetime
- # 分配设备
- class EquipAllot(ListView):
- def get(self, request):
- # 接收当前用户
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- # 判断是经销商还是超级管理员
- if current_user.is_superuser == True or current_user.is_staff == True:
- user_list = MyUser.objects.all()
- else:
- user_list = MyUser.objects.filter(user_agency=current_user.user_agency)
- nums = user_list.count()
- User_Log.objects.create(log_user=request.user.username,
- log_ip=request.META['REMOTE_ADDR'], log_desc='设备分配')
- return render(request, 'equipallot/equipallot.html', context={"nums": nums})
- def post(self, request):
- pass
- def allot_user_list(request):
- if request.method == 'GET':
- page = int(request.GET.get('page'))
- print("page=", page)
- # 接收当前用户
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- # 判断是经销商还是超级管理员
- if current_user.is_superuser == True or current_user.is_staff == True:
- user_list = MyUser.objects.all().order_by(
- "-date_joined")[(10*(page-1)):(page*10)]
- else:
- user_list = MyUser.objects.filter(user_agency=current_user.user_agency).order_by(
- "-date_joined")[(10*(page-1)):(page*10)]
- return render(request, 'equipallot/allot_user_list.html', context={'user_list': user_list})
- elif request.method == 'POST':
- req = request.POST.get('req')
- print("req:", req)
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- if req == "filter":
- # 筛选:用户名、创建时间:f:filter
- print("筛选:")
- f_name = request.POST.get('uname')
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_name:", f_name)
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- page = int(request.POST.get('page'))
- print("page:", page)
- if f_name == '' and f_tbegin == '' and f_tend == '':
- # 判断是经销商还是超级管理员
- if current_user.is_superuser == True or current_user.is_staff == True:
- user_list = MyUser.objects.all()
- else:
- user_list = MyUser.objects.filter(user_agency=current_user.user_agency)
- elif f_name == '' and f_tbegin != '' and f_tend != '':
- begindate = re.findall(r"\d+\.?\d*", f_tbegin)
- enddate = re.findall(r"\d+\.?\d*", f_tend)
- print("begindate:", begindate)
- print("enddate:", enddate)
- start_date = datetime.date(
- int(begindate[0]), int(begindate[1]), int(begindate[2]))
- end_date = datetime.date(
- int(enddate[0]), int(enddate[1]), int(enddate[2]))
- print("begindate:", begindate)
- print("enddate:", enddate)
- # 判断是经销商还是超级管理员
- if current_user.is_superuser == True or current_user.is_staff == True:
- user_list = MyUser.objects.filter(
- date_joined__range=(start_date, end_date))
- else:
- user_list = MyUser.objects.filter(
- user_agency=current_user.user_agency,date_joined__range=(start_date, end_date))
- elif f_name != '' and f_tbegin == '' and f_tend == '':
- # 判断是经销商还是超级管理员
- if current_user.is_superuser == True or current_user.is_staff == True:
- user_list = MyUser.objects.filter(username__contains=f_name)
- else:
- user_list = MyUser.objects.filter(
- user_agency=current_user.user_agency,username__contains=f_name)
- elif f_name != '' and f_tbegin != '' and f_tend != '':
- begindate = re.findall(r"\d+\.?\d*", f_tbegin)
- enddate = re.findall(r"\d+\.?\d*", f_tend)
- start_date = datetime.date(
- int(begindate[0]), int(begindate[1]), int(begindate[2]))
- end_date = datetime.date(
- int(enddate[0]), int(enddate[1]), int(enddate[2]))
- # 判断是经销商还是超级管理员
- if current_user.is_superuser == True or current_user.is_staff == True:
- user_list = MyUser.objects.filter(
- username__contains=f_name, date_joined__range=(start_date, end_date))
- else:
- user_list = MyUser.objects.filter(
- user_agency=current_user.user_agency,username__contains=f_name, date_joined__range=(start_date, end_date))
- nums = user_list.count()
- user_list = user_list[(10*(page-1)):(page*10)]
- return render(request, 'equipallot/allot_user_list.html', context={'user_list': user_list, "nums": nums})
- from django.views.decorators.csrf import csrf_exempt
- @csrf_exempt
- def allot_equip_list(request):
- # 当前用户已拥有的设备的列表:
- equip_list1 = []
- # 未被分配的设备的列表:
- equip_list2 = []
- # 当前页的设备id列表:
- equip_ids = []
- if request.method == 'GET':
- # 选中需要进行分配设备的用户后:显示的设备列表;
- uname = request.GET.get('uname')
- print("uname=", uname)
- uname_obj = MyUser.objects.get(username=uname)
- page = int(request.GET.get('page'))
- print("page=", page)
- # 接收当前用户
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- # 判断是经销商还是超级管理员
- if current_user.is_superuser == True or current_user.is_staff == True:
- equip_list = Equip.objects.filter(
- Q(equip_user=None) | Q(equip_user=uname_obj))
- else:
- equip_list = Equip.objects.filter(
- Q(equip_agency=current_user.user_agency, equip_user=None) | Q(equip_agency=current_user.user_agency,
- equip_user=uname_obj))
- equip_list = list(equip_list)
- print('type equip_list:', type(equip_list))
- # print('equip_list:', equip_list)
- for i in equip_list:
- if i.equip_user != None:
- equip_list1.append(i)
- else:
- equip_list2.append(i)
- # print('equip_list1:', equip_list1)
- # print('equip_list2:', equip_list2)
- equip_list = equip_list1+equip_list2
- equip_list = equip_list[(10*(page-1)):(page*10)]
- for i in equip_list:
- equip_ids.append(i.equip_id)
- equip_ids = ','.join(equip_ids)
- return render(request, 'equipallot/allot_equip_list.html', context={'equip_list': equip_list, 'equip_ids': equip_ids, "uname": uname})
- elif request.method == 'POST':
- req = request.POST.get('req')
- print("req:", req)
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- if req == "filter":
- # 筛选:用户名、创建时间:f:filter
- print("筛选:")
- uname = request.POST.get('uname')
- print("uname=", uname)
- uname_obj = MyUser.objects.get(username=uname)
- f_type = request.POST.get('type')
- f_id = request.POST.get('f_id')
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_type:", f_type)
- print("f_id:", f_id)
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- page = int(request.POST.get('page'))
- print("page:", page)
- # 000
- if f_id == None and f_type == '0' and f_tbegin == '' and f_tend == '':
- if current_user.is_superuser == True or current_user.is_staff == True:
- equip_list = Equip.objects.filter(
- Q(equip_user=None) | Q(equip_user=uname_obj))
- else:
- equip_list = Equip.objects.filter(
- Q(equip_agency=current_user.user_agency, equip_user=None) | Q(equip_agency=current_user.user_agency,
- equip_user=uname_obj))
- # 001 Q(equip_id=None)|
- elif f_id == None and f_type == '0' and f_tbegin != '' and f_tend != '':
- begindate = re.findall(r"\d+\.?\d*", f_tbegin)
- enddate = re.findall(r"\d+\.?\d*", f_tend)
- print("begindate:", begindate)
- print("enddate:", enddate)
- start_date = datetime.date(
- int(begindate[0]), int(begindate[1]), int(begindate[2]))
- end_date = datetime.date(
- int(enddate[0]), int(enddate[1]), int(enddate[2]))
- print("begindate:", begindate)
- print("enddate:", enddate)
- if current_user.is_superuser == True or current_user.is_staff == True:
- equip_list = Equip.objects.filter(Q(equip_user=None, equip_add_time__range=(
- start_date, end_date)) | Q(equip_user=uname_obj, equip_add_time__range=(start_date, end_date)))
- else:
- equip_list = Equip.objects.filter(Q(equip_agency=current_user.user_agency,
- equip_user=None, equip_add_time__range=(start_date, end_date)) | Q(equip_agency=current_user.user_agency,
- equip_user=uname_obj, equip_add_time__range=(start_date, end_date)))
- # 010
- elif f_id == None and f_type != '0' and f_tbegin == '' and f_tend == '':
- if current_user.is_superuser == True or current_user.is_staff == True:
- equip_list = Equip.objects.filter(Q(equip_user=None, equip_type=f_type) | Q(
- equip_user=uname_obj, equip_type=f_type))
- else:
- equip_list = Equip.objects.filter(Q(equip_agency=current_user.user_agency, equip_user=None,
- equip_type=f_type) | Q(equip_agency=current_user.user_agency, equip_user=uname_obj, equip_type=f_type))
- # 011
- elif f_id == None and f_type != '0' and f_tbegin != '' and f_tend != '':
- begindate = re.findall(r"\d+\.?\d*", f_tbegin)
- enddate = re.findall(r"\d+\.?\d*", f_tend)
- start_date = datetime.date(
- int(begindate[0]), int(begindate[1]), int(begindate[2]))
- end_date = datetime.date(
- int(enddate[0]), int(enddate[1]), int(enddate[2]))
- if current_user.is_superuser == True or current_user.is_staff == True:
- equip_list = Equip.objects.filter(Q(equip_user=None, equip_type=f_type, equip_add_time__range=(
- start_date, end_date)) | Q(equip_user=uname_obj, equip_type=f_type, equip_add_time__range=(start_date, end_date)))
- else:
- equip_list = Equip.objects.filter(Q(equip_agency=current_user.user_agency, equip_user=None, equip_type=f_type,
- equip_add_time__range=(start_date, end_date)) | Q(equip_agency=current_user.user_agency,
- equip_user=uname_obj, equip_type=f_type, equip_add_time__range=(start_date, end_date)))
- # 100
- elif f_id != None and f_type == '0' and f_tbegin == '' and f_tend == '':
- if current_user.is_superuser == True or current_user.is_staff == True:
- equip_list = Equip.objects.filter(
- Q(equip_user=None, equip_id__contains=f_id) | Q(equip_user=uname_obj, equip_id__contains=f_id))
- else:
- equip_list = Equip.objects.filter(Q(equip_agency=current_user.user_agency, equip_user=None,
- equip_id__contains=f_id) | Q(equip_agency=current_user.user_agency, equip_user=uname_obj, equip_id__contains=f_id))
- # 101
- elif f_id != None and f_type == '0' and f_tbegin != '' and f_tend != '':
- begindate = re.findall(r"\d+\.?\d*", f_tbegin)
- enddate = re.findall(r"\d+\.?\d*", f_tend)
- start_date = datetime.date(
- int(begindate[0]), int(begindate[1]), int(begindate[2]))
- end_date = datetime.date(
- int(enddate[0]), int(enddate[1]), int(enddate[2]))
- if current_user.is_superuser == True or current_user.is_staff == True:
- equip_list = Equip.objects.filter(Q(equip_user=None, equip_id__contains=f_id, equip_add_time__range=(
- start_date, end_date)) | Q(equip_user=uname_obj, equip_id__contains=f_id, equip_add_time__range=(start_date, end_date)))
- else:
- equip_list = Equip.objects.filter(Q(equip_agency=current_user.user_agency, equip_user=None, equip_id__contains=f_id,
- equip_add_time__range=(start_date, end_date)) | Q(equip_agency=current_user.user_agency, equip_user=uname_obj,
- equip_id__contains=f_id, equip_add_time__range=(start_date, end_date)))
- # 110
- elif f_id != None and f_type != '0' and f_tbegin == '' and f_tend == '':
- if current_user.is_superuser == True or current_user.is_staff == True:
- equip_list = Equip.objects.filter(Q(equip_user=None, equip_id__contains=f_id, equip_type=f_type) | Q(
- equip_user=uname_obj, equip_id__contains=f_id, equip_type=f_type))
- else:
- equip_list = Equip.objects.filter(Q(equip_agency=current_user.user_agency, equip_user=None,
- equip_id__contains=f_id, equip_type=f_type) | Q(equip_agency=current_user.user_agency,
- equip_user=uname_obj, equip_id__contains=f_id, equip_type=f_type))
- # 111
- elif f_id != None and f_type != '0' and f_tbegin != '' and f_tend != '':
- if current_user.is_superuser == True or current_user.is_staff == True:
- equip_list = Equip.objects.filter(Q(equip_user=None, equip_id__contains=f_id, equip_type=f_type, equip_add_time__range=(
- start_date, end_date)) | Q(equip_user=uname_obj, equip_id__contains=f_id, equip_type=f_type, equip_add_time__range=(start_date, end_date)))
- else:
- equip_list = Equip.objects.filter(Q(equip_agency=current_user.user_agency, equip_user=None, equip_id__contains=f_id,
- equip_type=f_type, equip_add_time__range=(start_date, end_date)) | Q(equip_agency=current_user.user_agency, equip_user=uname_obj,
- equip_id__contains=f_id, equip_type=f_type, equip_add_time__range=(start_date, end_date)))
- nums = equip_list.count()
- equip_list = equip_list[(10*(page-1)):(page*10)]
- for i in equip_list:
- equip_ids.append(i.equip_id)
- equip_ids = ','.join(equip_ids)
- return render(request, 'equipallot/allot_equip_list.html', context={'equip_list': equip_list, 'equip_ids': equip_ids, "nums": nums})
- # 进入对应的用户分配设备页面
- def allot(request):
- if request.method == 'GET':
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- uname = request.GET.get('uname')
- uname_obj = MyUser.objects.get(username=uname)
- print("uname=", uname)
- if current_user.is_superuser == True or current_user.is_staff == True:
- nums = Equip.objects.filter(
- Q(equip_user=None) | Q(equip_user=uname_obj)).count()
- else:
- nums = Equip.objects.filter(
- Q(equip_agency=current_user.user_agency, equip_user=None) | Q(equip_agency=current_user.user_agency, equip_user=uname_obj)).count()
- print('nums:', nums)
- return render(request, 'equipallot/allot.html', context={'nums': nums, "uname": uname})
- if request.method == 'POST':
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- uname = request.POST.get('uname')
- uname_obj = MyUser.objects.get(username=uname)
- print("uname=", uname)
- # 获得当前页的全部id:equip_ids
- equip_ids = request.POST.get('equip_ids')
- # print("equip_ids=", equip_ids)
- equip_ids = equip_ids.split(',')
- # print("当前页的所有设备id:equip_ids=", equip_ids)
- # # 此处equip_list不应该是 当前用户下所有设备和所有未分配的设备的“并集”
- # # 而应该是对该“并集”进行当前页的切片!否则会对非当前页的设备进行分配;
- # equip_list = equip_list1+equip_list2
- # # equip_list = equip_list[(10*(page-1)):(page*10)]
- button = request.POST.get('submit')
- if button == "fenpei":
- # 获得选中的复选框:
- check_box_list = request.POST.getlist('check_box_list')
- print('check_box_list:', check_box_list)
- no_check_box_list = []
- for i in equip_ids:
- if i in check_box_list:
- pass
- else:
- no_check_box_list.append(i)
- # print('no_check_box_list=', no_check_box_list)
- # # 定义空列表no_check_box_list---#获得未选中的复选框
- # no_check_box_list = []
- # # 当前页的设备列表:# 当前页的全部id:
- # for a in equip_ids:
- # no_check_box_list.append(a)
- # # 先获得选中的复选框的list(从set到list)
- # print('no_check_box_list=', no_check_box_list)
- # # 遍历选中的复选框中的元素
- # for b in check_box_list:
- # # 如果复选框中的元素在当前显示的no_check_box_list中
- # if b in no_check_box_list:
- # # 得到该元素对应的列表no_check_box_list中的索引;
- # x = no_check_box_list.index(b)
- # # 根据no_check_box_list列表的索引删除元素,剩下的即使没有被勾选的复选框
- # no_check_box_list.pop(x)
- # print('no_check_box_list2=', no_check_box_list) # 得到未选中的复选框的list
- # 分配复选框选中的设备:
- for checked_id in check_box_list:
- choose_equip = Equip.objects.get(equip_id=checked_id)
- # 如果选中的设备没有用户:即选中的设备 设备用户为None:
- if choose_equip.equip_user == None: # 只有当选中的设备id对应的设备 没有用户时才分配
- choose_equip.equip_user = uname_obj
- choose_equip.save() # 保存到数据库
- # 取消分配:给当前用户取消已分配的设备;
- for a in no_check_box_list:
- choose_equip = Equip.objects.get(equip_id=a)
- choose_equip.equip_user = None # 把设备的设备用户改为None,表示取消分配
- choose_equip.save()
- if current_user.is_superuser == True:
- equip_list = Equip.objects.filter(
- Q(equip_user=None) | Q(equip_user=uname_obj))
- else:
- equip_list = Equip.objects.filter(
- Q(equip_agency=current_user.user_agency, equip_user=None) | Q(equip_agency=current_user.user_agency, equip_user=uname_obj))
- user_equip_list = Equip.objects.filter(equip_user=uname_obj)
- equip_type_list = []
- for i in user_equip_list:
- equip_type_list.append(i.equip_type.type_id)
- print('abcdef',equip_type_list)
- groups = Group.objects.filter(user=uname_obj)
- # uname_obj.groups.clear()
- # uname_obj.groups.add(post_groups)
- scdgroup = Group.objects.get(name='杀虫灯用户')
- cbdgroup = Group.objects.get(name='测报灯用户')
- qxzgroup = Group.objects.get(name='气象站用户')
- bzygroup = Group.objects.get(name='孢子仪用户')
- jkgroup = Group.objects.get(name='监控用户')
- # 将用户加入所拥有设备类型的相对应的分组
- if 2 in equip_type_list:
- uname_obj.groups.add(scdgroup)
- else:
- uname_obj.groups.remove(scdgroup)
-
- if 3 in equip_type_list:
- uname_obj.groups.add(cbdgroup)
- else:
- uname_obj.groups.remove(cbdgroup)
- if 5 in equip_type_list:
- uname_obj.groups.add(qxzgroup)
- else:
- uname_obj.groups.remove(qxzgroup)
-
- if 6 in equip_type_list:
- uname_obj.groups.add(jkgroup)
- else:
- uname_obj.groups.remove(jkgroup)
-
- if 7 in equip_type_list:
- uname_obj.groups.add(bzygroup)
- else:
- uname_obj.groups.remove(bzygroup)
-
- nums = equip_list.count()
- User_Log.objects.create(log_user=request.user.username,
- log_ip=request.META['REMOTE_ADDR'], log_desc='设备分配--分配设备')
- return render(request, 'equipallot/allot.html', context={'equip_list': equip_list, 'nums': nums, "uname": uname, 'allot_note': '设备分配成功!'})
|