views.py 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. # -*- coding: utf-8 -*-
  2. from django.shortcuts import render
  3. from django.views.generic import ListView
  4. from apps.AppInfo.models import MyUser, Equip, Group
  5. from django import forms
  6. from django.db.models import Q
  7. import re
  8. import datetime
  9. # 分配设备
  10. class EquipAllot(ListView):
  11. def get(self, request):
  12. # 接收当前用户
  13. # current_user = request.session.get('username')
  14. current_user = MyUser.objects.get(username="admin")
  15. # print("current_user:", current_user)
  16. # current_user = MyUser.objects.get(username=current_user)
  17. page = request.GET.get("page")
  18. uname = request.GET.get("uname")
  19. user_list = MyUser.objects.all()
  20. nums = user_list.count()
  21. return render(request, 'backstageNet/equipallot/equipallot.html', context={"nums": nums,"page":page,"uname":uname})
  22. def post(self, request):
  23. pass
  24. def allot_user_list(request):
  25. if request.method == 'GET':
  26. page = int(request.GET.get('page'))
  27. print("page=", page)
  28. uname = request.GET.get("uname")
  29. # 接收当前用户
  30. # current_user = request.session.get('username')
  31. current_user = MyUser.objects.get(username="admin")
  32. # print("current_user:", current_user)
  33. # current_user = MyUser.objects.get(username=current_user)
  34. # if current_user.is_superuser == True:
  35. user_list = MyUser.objects.all().order_by(
  36. "-date_joined")[(10*(page-1)):(page*10)]
  37. if uname:
  38. user_list = MyUser.objects.filter(username__contains=uname).order_by(
  39. "-date_joined")[(10*(page-1)):(page*10)]
  40. return render(request, 'backstageNet/equipallot/allot_user_list.html', context={'user_list': user_list})
  41. elif request.method == 'POST':
  42. # current_user = request.session.get('username')
  43. # print("current_user:", current_user)
  44. current_user = MyUser.objects.get(username="admin")
  45. print("筛选:")
  46. f_name = request.POST.get('uname')
  47. page = int(request.POST.get('page'))
  48. print("page:", page)
  49. user_list = MyUser.objects.filter(username__contains=f_name)
  50. nums = user_list.count()
  51. user_list = user_list[(10*(page-1)):(page*10)]
  52. return render(request, 'backstageNet/equipallot/allot_user_list.html', context={'user_list': user_list, "nums": nums})
  53. from django.views.decorators.csrf import csrf_exempt
  54. @csrf_exempt
  55. def allot_equip_list(request):
  56. # 当前用户已拥有的设备的列表:
  57. equip_list1 = []
  58. # 未被分配的设备的列表:
  59. equip_list2 = []
  60. # 当前页的设备id列表:
  61. equip_ids = []
  62. if request.method == 'GET':
  63. # 选中需要进行分配设备的用户后:显示的设备列表;
  64. uname = request.GET.get('uname')
  65. print("uname=", uname)
  66. uname_obj = MyUser.objects.get(username=uname)
  67. page = int(request.GET.get('page'))
  68. print("page=", page)
  69. # 接收当前用户
  70. # current_user = request.session.get('username')
  71. # print("current_user:", current_user)
  72. current_user = MyUser.objects.get(username="admin")
  73. if current_user.is_superuser == True:
  74. equip_list = Equip.objects.filter(
  75. Q(equip_user=None) | Q(equip_user=uname_obj))
  76. equip_list = list(equip_list)
  77. print('type equip_list:', type(equip_list))
  78. # print('equip_list:', equip_list)
  79. for i in equip_list:
  80. if i.equip_user != None:
  81. equip_list1.append(i)
  82. else:
  83. equip_list2.append(i)
  84. # print('equip_list1:', equip_list1)
  85. # print('equip_list2:', equip_list2)
  86. equip_list = equip_list1+equip_list2
  87. equip_list = equip_list[(10*(page-1)):(page*10)]
  88. for i in equip_list:
  89. equip_ids.append(i.equip_id)
  90. equip_ids = ','.join(equip_ids)
  91. return render(request, 'backstageNet/equipallot/allot_equip_list.html', context={'equip_list': equip_list, 'equip_ids': equip_ids, "uname": uname})
  92. elif request.method == 'POST':
  93. # current_user = request.session.get('username')
  94. # print("current_user:", current_user)
  95. current_user = MyUser.objects.get(username="admin")
  96. print("筛选:")
  97. uname = request.POST.get('uname')
  98. print("uname=", uname)
  99. uname_obj = MyUser.objects.get(username=uname)
  100. f_type = request.POST.get('type')
  101. f_id = request.POST.get('f_id')
  102. print("f_type:", f_type)
  103. print("f_id:", f_id)
  104. page = int(request.POST.get('page'))
  105. print("page:", page)
  106. # 000
  107. if f_id == None and f_type == '0':
  108. equip_list = Equip.objects.filter(
  109. Q(equip_user=None) | Q(equip_user=uname_obj))
  110. # 010
  111. elif f_id == None and f_type != '0':
  112. equip_list = Equip.objects.filter(Q(equip_user=None, equip_type=f_type) | Q(
  113. equip_user=uname_obj, equip_type=f_type))
  114. # 100
  115. elif f_id != None and f_type == '0':
  116. equip_list = Equip.objects.filter(
  117. Q(equip_user=None, equip_id__contains=f_id) | Q(equip_user=uname_obj, equip_id__contains=f_id))
  118. # 110
  119. elif f_id != None and f_type != '0':
  120. equip_list = Equip.objects.filter(Q(equip_user=None, equip_id__contains=f_id, equip_type=f_type) | Q(
  121. equip_user=uname_obj, equip_id__contains=f_id, equip_type=f_type))
  122. nums = equip_list.count()
  123. equip_list = equip_list[(10*(page-1)):(page*10)]
  124. for i in equip_list:
  125. equip_ids.append(i.equip_id)
  126. equip_ids = ','.join(equip_ids)
  127. return render(request, 'backstageNet/equipallot/allot_equip_list.html', context={'equip_list': equip_list, 'equip_ids': equip_ids, "nums": nums})
  128. # 进入对应的用户分配设备页面
  129. def allot(request):
  130. if request.method == 'GET':
  131. # current_user = request.session.get('username')
  132. current_user = MyUser.objects.get(username="admin")
  133. print("current_user:", current_user)
  134. # current_user = MyUser.objects.get(username=current_user)
  135. uname = request.GET.get('uname')
  136. uname_obj = MyUser.objects.get(username=uname)
  137. print("uname=", uname)
  138. page = request.GET.get("currpage")
  139. f_name = request.GET.get("f_name")
  140. nums = Equip.objects.filter(
  141. Q(equip_user=None) | Q(equip_user=uname_obj)).count()
  142. print('nums:', nums)
  143. return render(request, 'backstageNet/equipallot/allot.html', context={"nums": nums, "uname": uname,"currpage":page,"f_name":f_name})
  144. if request.method == 'POST':
  145. # current_user = request.session.get('username')
  146. # print("current_user:", current_user)
  147. current_user = MyUser.objects.get(username="admin")
  148. uname = request.POST.get('uname')
  149. uname_obj = MyUser.objects.get(username=uname)
  150. print("uname=", uname)
  151. # 获得当前页的全部id:equip_ids
  152. equip_ids = request.POST.get('equip_ids')
  153. # print("equip_ids=", equip_ids)
  154. equip_ids = equip_ids.split(',')
  155. button = request.POST.get('submit')
  156. if button == "fenpei":
  157. # 获得选中的复选框:
  158. check_box_list = request.POST.getlist('check_box_list')
  159. print('check_box_list:', check_box_list)
  160. no_check_box_list = []
  161. for i in equip_ids:
  162. if i in check_box_list:
  163. pass
  164. else:
  165. no_check_box_list.append(i)
  166. # 分配复选框选中的设备:
  167. for checked_id in check_box_list:
  168. choose_equip = Equip.objects.get(equip_id=checked_id)
  169. # 如果选中的设备没有用户:即选中的设备 设备用户为None:
  170. if choose_equip.equip_user == None: # 只有当选中的设备id对应的设备 没有用户时才分配
  171. choose_equip.equip_user = uname_obj
  172. choose_equip.save() # 保存到数据库
  173. # 取消分配:给当前用户取消已分配的设备;
  174. for a in no_check_box_list:
  175. choose_equip = Equip.objects.get(equip_id=a)
  176. choose_equip.equip_user = None # 把设备的设备用户改为None,表示取消分配
  177. choose_equip.save()
  178. equip_list = Equip.objects.filter(
  179. Q(equip_user=None) | Q(equip_user=uname_obj))
  180. user_equip_list = Equip.objects.filter(equip_user=uname_obj)
  181. equip_type_list = []
  182. for i in user_equip_list:
  183. equip_type_list.append(i.equip_type.type_id)
  184. print('abcdef',equip_type_list)
  185. groups = Group.objects.filter(user=uname_obj)
  186. nums = equip_list.count()
  187. return render(request, 'backstageNet/equipallot/allot.html', context={'equip_list': equip_list, 'nums': nums, "uname": uname, 'allot_note': '设备分配成功!'})