views.py 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855
  1. # -*- coding: utf-8 -*-
  2. from django.shortcuts import render, redirect
  3. from django.http import HttpResponse
  4. from django.template import RequestContext
  5. from django.contrib import auth
  6. from django.contrib.auth import authenticate, login as auth_login, logout
  7. from django.contrib.auth import get_user_model
  8. from django.contrib.auth.models import User, Group, Permission
  9. from django.contrib.auth.hashers import make_password, check_password
  10. from django.contrib.auth.decorators import login_required
  11. from django.views.generic import ListView
  12. from django.views.generic.base import View
  13. from apps.AppInfoManage.models import Help, MyUser, User_Group, User_Log, Equip, Equip_type, Logo, Alarm_record, RecentCBDdata
  14. from django.db.models import Q
  15. # 引入自定义用户组:
  16. from apps.AppInfoManage.models import User_Group
  17. from apps.EquipManage.views import CJSONEncoder
  18. import time
  19. import re,datetime,json
  20. from apps.Home.forms import LoginForm, ChangePwdForm
  21. from apps.SystemManage.forms import AddUserForm
  22. from django.contrib.auth import get_user_model
  23. from django.utils.decorators import method_decorator
  24. from django.views.decorators.csrf import csrf_exempt
  25. # 用户管理
  26. class UserManage_View(ListView):
  27. def get(self, request):
  28. # 接收当前用户
  29. current_user = request.session.get('username')
  30. print("current_user:", current_user)
  31. current_user = MyUser.objects.get(username=current_user)
  32. # 判断是经销商还是超级管理员
  33. if current_user.is_superuser == True:
  34. # 超级管理员
  35. nums = MyUser.objects.all().count()
  36. else:
  37. nums = MyUser.objects.filter(user_agency=current_user.user_agency).count()
  38. User_Log.objects.create(log_user=request.user.username,
  39. log_ip=request.META['REMOTE_ADDR'], log_desc='系统管理-用户管理')
  40. return render(request, 'systemmanage/systemmanage_user.html', context={"nums": nums})
  41. def post(self,request):
  42. pass
  43. # 系统管理-用户管理子--页面用户列表视图:
  44. class UserList_View(ListView):
  45. def get(self, request):
  46. # 接收当前用户
  47. current_user = request.session.get('username')
  48. print("current_user:", current_user)
  49. current_user = MyUser.objects.get(username=current_user)
  50. page = int(request.GET.get('page'))
  51. print("page=", page)
  52. # 判断是经销商还是超级管理员
  53. if current_user.is_superuser == True or current_user.is_staff == True:
  54. user_list = MyUser.objects.all()[(10*(page-1)):(page*10)]#.order_by("-date_joined")
  55. else:
  56. user_list = MyUser.objects.filter(user_agency=current_user.user_agency)[(10*(page-1)):(page*10)]
  57. return render(request, 'systemmanage/systemmanage_user_list.html', context={"user_list": user_list,"username":current_user.username})
  58. def post(self, request):
  59. req = request.POST.get("req")
  60. current_user = request.session.get('username')
  61. print("current_user:", current_user)
  62. current_user = MyUser.objects.get(username=current_user)
  63. if req == "state":
  64. # 禁用和启用:
  65. u_id = request.POST.get("id")
  66. state = request.POST.get("state")
  67. print("id:",u_id)
  68. print("state:",state)
  69. user = MyUser.objects.get(id = u_id)
  70. user.is_active = state
  71. try:
  72. user.save()
  73. data = "0"
  74. except:
  75. data = "1"
  76. return HttpResponse(data)
  77. elif req == "resetpwd":
  78. # 重置密码:
  79. uid = request.POST.get("id")
  80. new_pwd = request.POST.get("userpassWord")
  81. print("id:",uid)
  82. print("new_pwd:",new_pwd)
  83. user = MyUser.objects.get(id = uid)
  84. user.set_password(new_pwd)
  85. try:
  86. user.save()
  87. data = "0"
  88. except:
  89. data = "1"
  90. return HttpResponse(data)
  91. elif req == "top_up":
  92. e_id = request.POST.get("id")
  93. print("e_id",e_id)
  94. user = MyUser.objects.get(id = e_id)
  95. user.expire_date = user.expire_date + datetime.timedelta(days=365)
  96. print("------------",user.expire_date)
  97. try:
  98. user.save()
  99. data = "0"
  100. except:
  101. data = "1"
  102. return HttpResponse(data)
  103. elif req == "filter":
  104. print("筛选:")
  105. uname = request.POST.get("uname")
  106. uemail = request.POST.get("uemail")
  107. utype = request.POST.get("utype")
  108. print("uname:",uname)
  109. print("uemail:",uemail)
  110. print("utype:",utype)
  111. page = int(request.POST.get("page"))
  112. print("page:",page)
  113. # 接收当前用户
  114. current_user = request.session.get('username')
  115. print("current_user:", current_user)
  116. current_user = MyUser.objects.get(username=current_user)
  117. # 判断是经销商还是超级管理员
  118. if current_user.is_superuser == True or current_user.is_staff == True:
  119. if uname == "" and uemail == "" and utype == "-1":
  120. user_list = MyUser.objects.all()
  121. elif uname == "" and uemail == "" and utype != "-1":
  122. if utype == "0":
  123. user_list = MyUser.objects.filter(is_superuser = True)
  124. elif utype == "1":
  125. user_list = MyUser.objects.filter(is_staff = True,is_superuser = False)
  126. elif utype == "2":
  127. user_list = MyUser.objects.filter(is_staff = False,is_superuser = False)
  128. elif uname == "" and uemail != "" and utype == "-1":
  129. user_list = MyUser.objects.filter(email = uemail)
  130. elif uname == "" and uemail != "" and utype != "-1":
  131. if utype == "0":
  132. user_list = MyUser.objects.filter(is_superuser = True,email = uemail)
  133. elif utype == "1":
  134. user_list = MyUser.objects.filter(is_staff = True,is_superuser = False,email = uemail)
  135. elif utype == "2":
  136. user_list = MyUser.objects.filter(is_staff = False,is_superuser = False,email = uemail)
  137. elif uname != "" and uemail == "" and utype == "-1":
  138. user_list = MyUser.objects.filter(username__contains = uname)
  139. elif uname != "" and uemail == "" and utype != "-1":
  140. if utype == "0":
  141. user_list = MyUser.objects.filter(is_superuser = True,username__contains = uname)
  142. elif utype == "1":
  143. user_list = MyUser.objects.filter(is_staff = True,is_superuser = False,username__contains = uname)
  144. elif utype == "2":
  145. user_list = MyUser.objects.filter(is_staff = False,is_superuser = False,username__contains = uname)
  146. elif uname != "" and uemail != "" and utype == "-1":
  147. user_list = MyUser.objects.filter(email = uemail,username__contains = uname)
  148. elif uname != "" and uemail != "" and utype != "-1":
  149. if utype == "0":
  150. user_list = MyUser.objects.filter(is_superuser = True,username__contains = uname,email = uemail)
  151. elif utype == "1":
  152. user_list = MyUser.objects.filter(is_staff = True,is_superuser = False,username__contains = uname,email = uemail)
  153. elif utype == "2":
  154. user_list = MyUser.objects.filter(is_staff = False,is_superuser = False,username__contains = uname,email = uemail)
  155. else:
  156. user_list = MyUser.objects.filter(user_agency=current_user.user_agency)
  157. nums = user_list.count()
  158. print("nums:",nums)
  159. user_list = user_list[(10*(page-1)):(page*10)]
  160. return render(request, 'systemmanage/systemmanage_user_list.html', context={"user_list": user_list,"nums":nums,"username":current_user.username})
  161. # 用户编辑
  162. from django.views.decorators.csrf import csrf_exempt
  163. @csrf_exempt
  164. def systemmanage_user_edit(request):
  165. username = request.GET.get('uname')
  166. uname = MyUser.objects.get(username=username)
  167. # 所有的用户组:
  168. # all_groups = User_Group.objects.all()
  169. # 所有的logo
  170. all_logo = Logo.objects.all()
  171. if request.method == 'GET':
  172. # 获取当前用户的所有组:
  173. user_name = request.user.username
  174. print('user_name=', user_name)
  175. current_user = MyUser.objects.get(username=user_name)
  176. if current_user.is_superuser:
  177. role = "superuser"
  178. elif current_user.is_staff:
  179. role = "staff"
  180. elif current_user.is_agency:
  181. role = "agency"
  182. else:
  183. role = "user"
  184. groups = User_Group.objects.filter(user=uname)
  185. print("type groups:", type(groups))
  186. print("groups:", groups)
  187. return render(request, 'systemmanage/systemmanage_user_edit.html', context={"uname": uname,"groups": groups, "all_logo": all_logo, 'role': role})
  188. if request.method == 'POST':
  189. postname = request.POST['user.name']
  190. uname.user_phone = request.POST['user.phone']
  191. post_type = request.POST.get('user_type')
  192. # 角色:即用户组;
  193. post_groups = request.POST.get('user_groups')
  194. print("post_groups:", post_groups)
  195. if post_groups != '0' and post_groups != None:
  196. # 获取当前用户的组:
  197. post_groups = Logo.objects.get(role_describe=post_groups)
  198. print("post_groups:", post_groups)
  199. groups = Group.objects.filter(user=uname)
  200. uname.user_logo = None
  201. uname.save()
  202. uname.user_logo = post_groups
  203. uname.save()
  204. # 省市区:
  205. uname.user_pro = request.POST['province']
  206. print(request.POST['province'])
  207. uname.user_city = request.POST['city']
  208. print(request.POST['city'])
  209. uname.user_area = request.POST['district']
  210. print(request.POST['district'])
  211. uname.user_remark = request.POST['user_remarks']
  212. print("post_type", post_type)
  213. if post_type == '0':
  214. uname.is_superuser = True
  215. uname.is_staff = True
  216. print("post_type")
  217. elif post_type == '1':
  218. uname.is_superuser = False
  219. uname.is_staff = True
  220. print("post_type")
  221. elif post_type == '2':
  222. uname.is_superuser = False
  223. uname.is_staff = False
  224. print("post_type")
  225. # 判断新输入的用户名是否存在:
  226. # post的用户名存在,且没有更改用户名:
  227. if MyUser.objects.filter(username=postname).exists() == True and MyUser.objects.get(username=postname).username == uname.username:
  228. uname.save()
  229. user_list = MyUser.objects.all()
  230. User_Log.objects.create(log_user=request.user.username,
  231. log_ip=request.META['REMOTE_ADDR'], log_desc='系统管理-用户管理--编辑用户:修改用户'+username+"的信息")
  232. return redirect('/systemmanage_user')
  233. # post的用户名存在,且用户名改变,即输入的新用户名已存在!
  234. elif MyUser.objects.filter(username=postname).exists() == True and MyUser.objects.get(username=postname).username != uname.username:
  235. uname.save()
  236. User_Log.objects.create(log_user=request.user.username,
  237. log_ip=request.META['REMOTE_ADDR'], log_desc='系统管理-用户管理--编辑用户:修改用户'+username+"的信息")
  238. user_name_error = "用户名修改失败,该用户已存在!"
  239. return render(request, 'systemmanage/systemmanage_user_edit.html', context={"uname": uname, "roles": roles, "role_num": role_num, 'user_name_error': user_name_error})
  240. # post的用户名不存在,即可用的新用户名:
  241. else:
  242. # 保存新用户名:
  243. uname.username = postname
  244. uname.save()
  245. User_Log.objects.create(log_user=request.user.username,
  246. log_ip=request.META['REMOTE_ADDR'], log_desc='系统管理-用户管理--编辑用户:修改'+uname+"的用户名为:"+uname.username)
  247. return redirect('/systemmanage_user')
  248. # 用户管理--新增用户 视图函数
  249. class UserManageAdd_View(View):
  250. def post(self, request):
  251. # 用户注册的ajax的post:
  252. name = request.POST.get('username')
  253. email = request.POST.get('email')
  254. phone = request.POST.get('phone')
  255. pro = request.POST.get('province')
  256. city = request.POST.get('city')
  257. area = request.POST.get('area')
  258. utype = request.POST.get('type')
  259. remark = request.POST.get('remark')
  260. group = request.POST.get('group')
  261. user_name = request.user.username
  262. print('user_name=', user_name)
  263. current_user = MyUser.objects.get(username=user_name)
  264. one_year = datetime.timedelta(days=365)
  265. one_year_later = datetime.datetime.now() + one_year
  266. if current_user.is_superuser == True or current_user.is_staff == True:
  267. if MyUser.objects.extra(where=['binary username=%s'], params=[name]).exists():
  268. # 用户已存在!!!
  269. data = "1"
  270. return HttpResponse(data)
  271. elif MyUser.objects.filter(email = email).exists():
  272. # 该邮箱已注册!!!
  273. data = "2"
  274. return HttpResponse(data)
  275. else:
  276. UserModel = get_user_model()
  277. if utype == "0":
  278. # 创建管理员:
  279. user = UserModel.objects.create_user(username=name, email=email,\
  280. user_phone=phone, password="yf123456",\
  281. user_pro = pro,user_city = city,user_area = area,\
  282. is_active = 1,is_staff = 1)
  283. elif utype == "1":
  284. # 创建用户:
  285. user = UserModel.objects.create_user(username=name, email=email,\
  286. user_phone=phone, password="yf123456",\
  287. user_pro = pro,user_city = city,user_area = area,\
  288. is_active = 1,is_staff = 0,expire_date=one_year_later)
  289. elif current_user.is_agency == True:
  290. if MyUser.objects.extra(where=['binary username=%s'], params=[name]).exists():
  291. # 用户已存在!!!
  292. data = "1"
  293. return HttpResponse(data)
  294. elif MyUser.objects.filter(email = email).exists():
  295. # 该邮箱已注册!!!
  296. data = "2"
  297. return HttpResponse(data)
  298. else:
  299. UserModel = get_user_model()
  300. user = UserModel.objects.create_user(username=name, email=email,\
  301. user_phone=phone, password="yf123456",\
  302. user_pro = pro,user_city = city,user_area = area,\
  303. is_active = 1,is_staff = 0,user_agency = current_user.user_agency)
  304. user.save()
  305. data = "0"
  306. return HttpResponse(data)
  307. def get(self, request):
  308. user_name = request.user.username
  309. print('user_name=', user_name)
  310. current_user = MyUser.objects.get(username=user_name)
  311. if current_user.is_superuser:
  312. role = "superuser"
  313. elif current_user.is_staff:
  314. role = "staff"
  315. elif current_user.is_agency:
  316. role = "agency"
  317. form = AddUserForm()
  318. return render(request, 'systemmanage/systemmanage_user_add.html', context={'form': form, 'role': role})
  319. # 日志管理
  320. class Log_View(View):
  321. def get(self,request):
  322. nums = User_Log.objects.all().count()
  323. return render(request,'systemmanage/systemmanage_log.html',context={'nums':nums})
  324. # 日志列表
  325. class Log_List(View):
  326. def get(self,request):
  327. page = int(request.GET.get('page'))
  328. print("page:",page)
  329. log_list = User_Log.objects.all()[(10*(page-1)):(page*10)]
  330. # name_list = []
  331. # aaa = MyUser.objects.all().values()
  332. # for a in aaa:
  333. # name_list.append(a['username'])
  334. # print(name_list)
  335. # bbb = User_Log.objects.filter(log_user__in=name_list).order_by['-log_time'][:-1]
  336. # print(bbb)
  337. return render(request,'systemmanage/systemmanage_log_list.html',context={'log_list':log_list})
  338. def post(self, request):
  339. req = request.POST.get('req')
  340. print("req:",req)
  341. if req == "filter":
  342. # 筛选:用户名、创建时间:f:filter
  343. print("筛选:")
  344. f_name = request.POST.get('uname')
  345. f_tbegin = request.POST.get('begin')
  346. f_tend = request.POST.get('end')
  347. print("f_name:",f_name)
  348. print("f_tbegin:",f_tbegin)
  349. print("f_tend:",f_tend)
  350. page = int(request.POST.get('page'))
  351. print("page:",page)
  352. if f_name == '' and f_tbegin == '' and f_tend == '':
  353. log_list = User_Log.objects.all()
  354. elif f_name == '' and f_tbegin != '' and f_tend != '':
  355. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  356. enddate = re.findall(r"\d+\.?\d*", f_tend)
  357. print("begindate:",begindate)
  358. print("enddate:",enddate)
  359. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  360. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  361. print("begindate:",begindate)
  362. print("enddate:",enddate)
  363. log_list = User_Log.objects.filter(log_time__range=(start_date, end_date))
  364. elif f_name != '' and f_tbegin == '' and f_tend == '':
  365. log_list = User_Log.objects.filter(log_user__contains=f_name)
  366. elif f_name != '' and f_tbegin != '' and f_tend != '':
  367. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  368. enddate = re.findall(r"\d+\.?\d*", f_tend)
  369. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  370. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  371. log_list = User_Log.objects.filter(log_user__contains=f_name,log_time__range=(start_date, end_date))
  372. # dat = {'msg':"测试","nums":100}
  373. nums = log_list.count()
  374. log_list = log_list[(10*(page-1)):(page*10)]
  375. return render(request,'systemmanage/systemmanage_log_list.html',context={'log_list':log_list,"nums":nums})
  376. # 用户组管理 视图函数
  377. class RoleManage_View(View):
  378. def get(self, request):
  379. role_list = Logo.objects.all()
  380. return render(request, 'systemmanage/systemmanage_role.html', context={'role_list': role_list})
  381. def post(self, request):
  382. # addName = request.POST.get('addName')
  383. # print("addName:",addName)
  384. addDescribe = request.POST.get('addDescribe')
  385. print("addDescribe:",addDescribe)
  386. groupname = Logo.objects.filter(role_describe=addDescribe)
  387. if len(groupname) != 0:
  388. data = "1"
  389. return HttpResponse(data)
  390. group = Logo.objects.create(role_describe=addDescribe)
  391. data = "0"
  392. return HttpResponse(data)
  393. # 自定义首页logo和footer:
  394. import os
  395. from PIL import Image
  396. @method_decorator(csrf_exempt, name='dispatch')
  397. def home_set(request):
  398. # 获得当前用户的用户名
  399. if request.method == 'GET':
  400. current_group = request.GET.get('group')
  401. print("current_group", current_group)
  402. group = Logo.objects.get(role_describe=current_group)
  403. return render(request, 'systemmanage/home_set.html',context={'group': group})
  404. if request.method == 'POST':
  405. req = request.POST.get('req')
  406. print("req:", req)
  407. if req == 'footer':
  408. current_group = request.POST.get('group')
  409. print("current_group:", current_group)
  410. group = Logo.objects.get(role_describe=current_group)
  411. # print("group.role_footer:", group.role_footer)
  412. footer = request.POST.get('footer')
  413. # print("footer:", footer)
  414. group.role_footer = footer
  415. header = request.POST.get('header')
  416. # print("footer:", footer)
  417. group.role_header = header
  418. group.save()
  419. data = "0"
  420. return HttpResponse(data)
  421. # elif req == 'header':
  422. # current_group = request.POST.get('group')
  423. # print("current_group:", current_group)
  424. # group = Logo.objects.get(role_describe=current_group)
  425. # # print("group.role_footer:", group.role_footer)
  426. # header = request.POST.get('header')
  427. # # print("footer:", footer)
  428. # group.role_footer = header
  429. # group.save()
  430. # data = "0"
  431. # return HttpResponse(data)
  432. else:
  433. current_group = request.POST.get('group1')
  434. print("current_group:", current_group)
  435. group = Logo.objects.get(role_describe=current_group)
  436. group_logo = request.FILES['upicture']
  437. print("组的首页logo", group_logo)
  438. # 路径:
  439. group_logo_dir = 'home_logo/'
  440. # group_logo_dir = 'F:\\YFWLW\\yfwlw\\home_logo/'
  441. # 判断如果路径不存在,即创建路径
  442. if os.path.exists(group_logo_dir) == False:
  443. os.makedirs(group_logo_dir)
  444. img = Image.open(group_logo)
  445. img.save(group_logo_dir + current_group+".png")
  446. new_logo = group_logo_dir + current_group+".png"
  447. # new_logo = 'home_logo/' + current_group+".png"
  448. print("组页logo路径:", new_logo)
  449. # 数据库关联设备,并在照片的表中存入路径:
  450. group.role_logo = new_logo
  451. group.save()
  452. data = "0"
  453. return HttpResponse(data)
  454. # 权限列表 视图函数
  455. class Privi_View(ListView):
  456. def get(self, request):
  457. privi_list = Permission.objects.all()
  458. return render(request, 'systemmanage/systemmanage_privi.html', context={'privi_list': privi_list})
  459. # 帮助中心设置 视图函数
  460. class Help_Set_View(View):
  461. def get(self, request):
  462. help_list = Help.objects.all()
  463. return render(request, 'systemmanage/systemmanage_help.html', context={'help_list': help_list})
  464. # 设备预警信息
  465. class EquipAlarm(View):
  466. def get(self,request):
  467. alarm_obj = Alarm_record.objects.all()
  468. nums = alarm_obj.count()
  469. return render(request,'systemmanage/equip_alarm.html', context={'nums': nums})
  470. from collections import Counter
  471. # 设备预警信息
  472. class EquipAlarm_List(View):
  473. def get(self,request):
  474. page = int(request.GET.get('page'))
  475. alarm_obj = Alarm_record.objects.all()
  476. alarm_list = alarm_obj[(10*(page-1)):(page*10)]
  477. return render(request,'systemmanage/equip_alarm_list.html', context={'alarm_list': alarm_list})
  478. def post(self,request):
  479. e_id = request.POST.get('e_id')
  480. page = int(request.POST.get('page',1))
  481. f_type = request.POST.get('f_type')
  482. req = request.POST.get('req')
  483. data = []
  484. if req == "offline":
  485. alarm_list = Alarm_record.objects.filter(alarm_desc="{'status':0,'type':'offline'}").values_list('equip_id_id')
  486. dat = Counter(alarm_list)
  487. dat = {str(k): v for k, v in dat.items()}
  488. for i in dat:
  489. number = re.findall("\d+",i)[0]
  490. data.append({"e_id":number,"etype":Equip.objects.get(equip_id=number).equip_type_id,"nums":dat[i]})
  491. data = sorted(data, key=lambda x:x['nums'],reverse=True)
  492. nums = len(data)
  493. data = data[(10*(page-1)):(page*10)]
  494. data = {'data': data, 'nums': nums}
  495. data = json.dumps(data, cls=CJSONEncoder)
  496. return HttpResponse(data)
  497. elif req == "relink":
  498. alarm_list = Alarm_record.objects.filter(alarm_desc="{'status': 'relink', 'type': 'dev_sta'}").values_list('equip_id_id')
  499. dat = Counter(alarm_list)
  500. dat = {str(k): v for k, v in dat.items()}
  501. for i in dat:
  502. number = re.findall("\d+",i)[0]
  503. data.append({"e_id":number,"etype":Equip.objects.get(equip_id=number).equip_type_id,"nums":dat[i]})
  504. data = sorted(data, key=lambda x:x['nums'],reverse=True)
  505. nums = len(data)
  506. data = data[(10*(page-1)):(page*10)]
  507. data = {'data': data, 'nums': nums}
  508. data = json.dumps(data, cls=CJSONEncoder)
  509. return HttpResponse(data)
  510. elif req == "cbdoffline":
  511. alarm_list = Alarm_record.objects.filter(alarm_desc="{'status':0,'type':'offline'}",e_type="3").values_list('equip_id_id')
  512. dat = Counter(alarm_list)
  513. dat = {str(k): v for k, v in dat.items()}
  514. for i in dat:
  515. number = re.findall("\d+",i)[0]
  516. data.append({"e_id":number,"etype":"3","nums":dat[i]})
  517. data = sorted(data, key=lambda x:x['nums'],reverse=True)
  518. nums = len(data)
  519. data = data[(10*(page-1)):(page*10)]
  520. data = {'data': data, 'nums': nums}
  521. data = json.dumps(data, cls=CJSONEncoder)
  522. return HttpResponse(data)
  523. elif req == "scdoffline":
  524. alarm_list = Alarm_record.objects.filter(alarm_desc="{'status':0,'type':'offline'}",e_type="2").values_list('equip_id_id')
  525. dat = Counter(alarm_list)
  526. dat = {str(k): v for k, v in dat.items()}
  527. for i in dat:
  528. number = re.findall("\d+",i)[0]
  529. data.append({"e_id":number,"etype":"2","nums":dat[i]})
  530. data = sorted(data, key=lambda x:x['nums'],reverse=True)
  531. nums = len(data)
  532. data = data[(10*(page-1)):(page*10)]
  533. data = {'data': data, 'nums': nums}
  534. data = json.dumps(data, cls=CJSONEncoder)
  535. return HttpResponse(data)
  536. elif req == "xyoffline":
  537. alarm_list = Alarm_record.objects.filter(alarm_desc="{'status':0,'type':'offline'}",e_type="4").values_list('equip_id_id')
  538. dat = Counter(alarm_list)
  539. dat = {str(k): v for k, v in dat.items()}
  540. for i in dat:
  541. number = re.findall("\d+",i)[0]
  542. data.append({"e_id":number,"etype":"4","nums":dat[i]})
  543. data = sorted(data, key=lambda x:x['nums'],reverse=True)
  544. nums = len(data)
  545. data = data[(10*(page-1)):(page*10)]
  546. data = {'data': data, 'nums': nums}
  547. data = json.dumps(data, cls=CJSONEncoder)
  548. return HttpResponse(data)
  549. elif req == "qxzoffline":
  550. alarm_list = Alarm_record.objects.filter(alarm_desc="{'status':0,'type':'offline'}",e_type="5").values_list('equip_id_id')
  551. dat = Counter(alarm_list)
  552. dat = {str(k): v for k, v in dat.items()}
  553. for i in dat:
  554. number = re.findall("\d+",i)[0]
  555. data.append({"e_id":number,"etype":"5","nums":dat[i]})
  556. data = sorted(data, key=lambda x:x['nums'],reverse=True)
  557. nums = len(data)
  558. data = data[(10*(page-1)):(page*10)]
  559. data = {'data': data, 'nums': nums}
  560. data = json.dumps(data, cls=CJSONEncoder)
  561. return HttpResponse(data)
  562. elif req == "cbdrelink":
  563. alarm_list = Alarm_record.objects.filter(alarm_desc="{'status': 'relink', 'type': 'dev_sta'}",e_type="3").values_list('equip_id_id')
  564. dat = Counter(alarm_list)
  565. dat = {str(k): v for k, v in dat.items()}
  566. for i in dat:
  567. number = re.findall("\d+",i)[0]
  568. data.append({"e_id":number,"etype":"3","nums":dat[i]})
  569. data = sorted(data, key=lambda x:x['nums'],reverse=True)
  570. nums = len(data)
  571. data = data[(10*(page-1)):(page*10)]
  572. data = {'data': data, 'nums': nums}
  573. data = json.dumps(data, cls=CJSONEncoder)
  574. return HttpResponse(data)
  575. elif req == "qxzrelink":
  576. alarm_list = Alarm_record.objects.filter(alarm_desc="{'status': 'relink', 'type': 'dev_sta'}",e_type="5").values_list('equip_id_id')
  577. dat = Counter(alarm_list)
  578. dat = {str(k): v for k, v in dat.items()}
  579. for i in dat:
  580. number = re.findall("\d+",i)[0]
  581. data.append({"e_id":number,"etype":"5","nums":dat[i]})
  582. data = sorted(data, key=lambda x:x['nums'],reverse=True)
  583. nums = len(data)
  584. data = data[(10*(page-1)):(page*10)]
  585. data = {'data': data, 'nums': nums}
  586. data = json.dumps(data, cls=CJSONEncoder)
  587. return HttpResponse(data)
  588. alarm_obj = Alarm_record.objects.all().values()
  589. if e_id:
  590. alarm_obj = Alarm_record.objects.filter(equip_id__equip_id__contains=e_id).values()
  591. dat = []
  592. for i in alarm_obj:
  593. sta = {"equip_id": i["equip_id_id"],"alarm_time": i["alarm_time"],"alarm_desc": i["alarm_desc"]}
  594. dat.append(sta)
  595. if f_type:
  596. dat = []
  597. for i in alarm_obj:
  598. sta = {"equip_id": i["equip_id_id"],"alarm_time": i["alarm_time"],"alarm_desc": i["alarm_desc"]}
  599. if eval(i['alarm_desc'])['type'] == f_type:
  600. dat.append(sta)
  601. nums = len(dat)
  602. dat = dat[(10*(page-1)):(page*10)]
  603. # print("dat:",eval(dat[0]['alarm_desc'])['type'])
  604. data = {'dat': dat, 'nums': nums}
  605. data = json.dumps(data, cls=CJSONEncoder)
  606. # print("data:",data)
  607. return HttpResponse(data)
  608. # 代理商分配视图
  609. class Agency_View(ListView):
  610. def get(self, request):
  611. agency_list = User_Group.objects.all()
  612. nums = MyUser.objects.all().count()
  613. return render(request,'systemmanage/agency_view.html', context={'nums': nums, "agency_list":agency_list})
  614. def post(self, request):
  615. user_name = request.POST.get('uname')
  616. agency_name = request.POST.get('agency')
  617. is_not = request.POST.get('is_not')
  618. print("username",user_name)
  619. print("agencyname",agency_name)
  620. print("is_not",is_not)
  621. user_obj = MyUser.objects.get(username=user_name)
  622. if agency_name == "":
  623. user_obj.user_agency = None
  624. user_obj.is_agency = is_not
  625. user_obj.save()
  626. try:
  627. equip_list = Equip.objects.filter(equip_user=user_obj)
  628. for x in equip_list:
  629. x.equip_agency = None
  630. x.save()
  631. except:
  632. pass
  633. else:
  634. agency_obj = User_Group.objects.get(name=agency_name)
  635. user_obj.user_agency = agency_obj
  636. user_obj.is_agency = is_not
  637. user_obj.save()
  638. try:
  639. equip_list = Equip.objects.filter(equip_user=user_obj)
  640. for x in equip_list:
  641. x.equip_agency = agency_obj
  642. x.save()
  643. except:
  644. pass
  645. data = "0"
  646. return HttpResponse(data)
  647. class Agency_View_List(ListView):
  648. def get(self, request):
  649. page = int(request.GET.get('page'))
  650. print("page:",page)
  651. username = request.GET.get('name')
  652. print("name:",username)
  653. if username != None:
  654. user_list = MyUser.objects.filter(username__contains=username)
  655. else:
  656. user_list = MyUser.objects.all()
  657. nums = user_list.count()
  658. user_list = user_list[(10*(page-1)):(page*10)]
  659. agency_list = User_Group.objects.all()
  660. return render(request,'systemmanage/agency_view_list.html', context={"user_list":user_list, "agency_list":agency_list, "nums":nums})
  661. def post(self, request):
  662. pass
  663. # 新增代理商
  664. class Agency_Add_View(ListView):
  665. def get(self, request):
  666. pass
  667. def post(self, request):
  668. agency_name = request.POST.get('name')
  669. if User_Group.objects.filter(name=agency_name).exists():
  670. print("代理商已存在")
  671. data = "1"
  672. else:
  673. User_Group.objects.create(name=agency_name)
  674. data = "0"
  675. return HttpResponse(data)
  676. # 测报灯识别
  677. class Is_Distinguish(ListView):
  678. def get(self, request):
  679. cbd_list = Equip.objects.filter(equip_type_id=3)
  680. nums = cbd_list.count()
  681. return render(request,'systemmanage/isDistinguish.html', context={"nums":nums})
  682. def post(self, request):
  683. page = int(request.POST.get("page"))
  684. imei = request.POST.get("imei")
  685. cbd_list = Equip.objects.filter(equip_type_id=3).values()
  686. cbd_list2 = RecentCBDdata.objects.all().values()
  687. if imei:
  688. cbd_list = Equip.objects.filter(equip_type_id=3,equip_id__contains=imei).values()
  689. cbd_list2 = RecentCBDdata.objects.filter(equip_id__equip_id__contains=imei).values()
  690. dat = []
  691. for i in cbd_list:
  692. for x in cbd_list2:
  693. if x['equip_id_id'] == i['equip_id']:
  694. dat.append({"e_id":i['equip_id'],"add_time":i['equip_add_time'],"addr":i['ftp_addr'],"disc":x['disc']})
  695. nums = len(dat)
  696. print(dat)
  697. dat = dat[(10*(page-1)):(page*10)]
  698. data = {"dat":dat,"nums":nums}
  699. data = json.dumps(data, cls=CJSONEncoder)
  700. return HttpResponse(data)
  701. # 测报灯识别修改
  702. class Is_Distinguish_Change(ListView):
  703. def get(self, request):
  704. pass
  705. def post(self, request):
  706. imei = request.POST.get("imei")
  707. addr = request.POST.get("addr")
  708. disc = request.POST.get("disc")
  709. print("disc",disc)
  710. print("addr",addr)
  711. print("imei",imei)
  712. if disc == "1":
  713. try:
  714. cbd_obj = RecentCBDdata.objects.get(equip_id_id=imei)
  715. cbd_obj.disc = 1
  716. cbd_obj.save()
  717. data = "0"
  718. except:
  719. data = "1"
  720. elif disc == "0":
  721. try:
  722. cbd_obj = RecentCBDdata.objects.get(equip_id_id=imei)
  723. cbd_obj.disc = 0
  724. cbd_obj.save()
  725. data = "0"
  726. except:
  727. data = "1"
  728. elif disc == "2":
  729. try:
  730. cbd_obj = RecentCBDdata.objects.get(equip_id_id=imei)
  731. cbd_obj.disc = 2
  732. cbd_obj.save()
  733. data = "0"
  734. except:
  735. data = "1"
  736. if addr == "cancel":
  737. try:
  738. equip_obj = Equip.objects.get(equip_id=imei)
  739. equip_obj.ftp_addr = ""
  740. equip_obj.save()
  741. data = "0"
  742. except:
  743. data = "1"
  744. elif addr:
  745. try:
  746. equip_obj = Equip.objects.get(equip_id=imei)
  747. equip_obj.ftp_addr = addr
  748. equip_obj.save()
  749. data = "0"
  750. except:
  751. data = "1"
  752. return HttpResponse(data)