views.py 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254
  1. import json
  2. import random
  3. import re
  4. from io import BytesIO
  5. import hashlib
  6. import requests
  7. import xlwt
  8. from django.contrib.auth.hashers import check_password, make_password
  9. # Create your views here.
  10. from django.http import HttpResponse, JsonResponse, StreamingHttpResponse
  11. from django.shortcuts import redirect, render
  12. from django.views.generic import ListView
  13. from django.views.generic.base import View
  14. from apps.AppInfoManage.models import *
  15. from apps.EquipManage.views import CJSONEncoder
  16. from apps.Pestapp.views import verification_code
  17. from django.db.models import Q
  18. import os
  19. import time
  20. import datetime
  21. from PIL import Image
  22. #判断当前登录用户类型
  23. class Judge_User(ListView):
  24. def get(self, request):
  25. name = request.session.get("username")
  26. # name = "admin"
  27. user_name = MyUser.objects.get(username=name)
  28. if user_name.is_superuser == True and user_name.is_staff == True and user_name.is_active == True:
  29. data = 1
  30. print("管理员")
  31. else:
  32. consumer = Purchase.objects.filter(userid=user_name)
  33. if consumer.exists():
  34. data = 2
  35. print("用户已购买")
  36. else:
  37. data = 3
  38. return HttpResponse(data)
  39. #筛选未购买的用户
  40. def post(self, request):
  41. page = int(request.POST.get("page"))
  42. ret = request.POST.get("ret")
  43. user_list = MyUser.objects.all()
  44. data = [] #未分配
  45. date = [] #已分配
  46. for i in user_list:
  47. buy_user = Purchase.objects.filter(userid=i.id)
  48. if buy_user.exists():
  49. date.append({
  50. "username":i.username,"email":i.email,"time":i.date_joined.strftime("%Y-%m-%d %H:%M:%S"),
  51. "phone":i.user_phone,"ret":"2"
  52. })
  53. else:
  54. data.append({
  55. "username":i.username,"email":i.email,"time":i.date_joined.strftime("%Y-%m-%d %H:%M:%S"),
  56. "phone":i.user_phone,"ret":"1"
  57. })
  58. if ret == "now": # 以购买用户
  59. num = len(date)
  60. dat = date[(10*(page-1)):(page*10)]
  61. elif ret == "off": #未购买用户
  62. num = len(data)
  63. dat = data[(10*(page-1)):(page*10)]
  64. elif ret == "all": # 全部用户
  65. dats = date + data
  66. num = len(dats)
  67. dat = dats[(10*(page-1)):(page*10)]
  68. data = {"dat": dat, "num": num}
  69. data = json.dumps(data)
  70. return HttpResponse(data)
  71. #分配账号页面
  72. class Allocation(ListView):
  73. def get(self, request):
  74. return render(request, "pestDiagnosis/insect_allocation.html", context={})
  75. #取消分配:
  76. class Cancel_Branch(ListView):
  77. def post(self, request):
  78. name = request.POST.get("name")
  79. ret = request.POST.get("ret")
  80. data = []
  81. names = MyUser.objects.get(username=name)
  82. if ret == "del": #取消分配
  83. p_user = Purchase.objects.filter(userid=names)
  84. if p_user.exists():
  85. Purchase.objects.get(userid__username=name).delete()
  86. data = 1
  87. else:
  88. data = 3
  89. elif ret == "screen": # 按用户名字进行筛选
  90. user_list = MyUser.objects.filter(username=name)
  91. for i in user_list:
  92. data.append({
  93. "username":i.username,"email":i.email,"time":i.date_joined.strftime("%Y-%m-%d %H:%M:%S"),
  94. "phone":i.user_phone
  95. })
  96. elif ret == "dist": #分配账号
  97. p_user = Purchase.objects.filter(userid=names)
  98. if p_user.exists():
  99. data = 2
  100. else:
  101. Purchase.objects.create(userid=names)
  102. data = 0
  103. print("分配账号")
  104. data = json.dumps(data)
  105. return HttpResponse(data)
  106. #查看采集数据详情和当前账号下所有测报员信息
  107. class Look_User(ListView):
  108. def get(self, request):
  109. return render(request, "pestDiagnosis/pestDiagnosisList.html", context={})
  110. def post(self, request):
  111. name = request.session.get("username")
  112. user_name = MyUser.objects.get(username=name)
  113. page = int(request.POST.get("page"))
  114. data = []
  115. if user_name.is_superuser == True and user_name.is_staff == True and user_name.is_active == True:
  116. print("管理员")
  117. account = User_Reporter.objects.all()
  118. else:
  119. print("普通用户")
  120. account = User_Reporter.objects.filter(user_id=user_name)
  121. num = account.count()
  122. for i in account:
  123. data.append({
  124. "name": i.name,
  125. "phone": i.phone,
  126. "time": i.time.strftime("%Y-%m-%d %H:%M:%S"),
  127. "addr": i.addr,
  128. "id": i.id,
  129. "user_id": i.user_id.username
  130. })
  131. dat = data[(10*(page-1)):(page*10)]
  132. data = {"dat": dat, "num": num}
  133. data = json.dumps(data)
  134. return HttpResponse(data)
  135. #新增数据省市县三级联动
  136. class Cate_Insect(ListView):
  137. def get(self, request):
  138. name = request.session.get("username")
  139. print("name", name)
  140. user_name = MyUser.objects.get(username=name)
  141. addr = Address_Province.objects.filter(id__lt=35)
  142. insect = Insect_Plant.objects.filter(ids=user_name)
  143. return render(request, "pestDiagnosis/newPestDiagnosis.html", context={"addr": addr, "insect": insect})
  144. def post(self, request):
  145. code = request.POST.get("code")
  146. if code:
  147. city = Address_Province.objects.filter(parent_code=code)
  148. citys = []
  149. for i in city:
  150. citys.append(
  151. {"name": i.name, "parent_code": i.parent_code, "code": i.code})
  152. new_s = []
  153. for x in citys:
  154. if x not in new_s:
  155. new_s.append(x)
  156. data = json.dumps(new_s)
  157. else:
  158. data = 0
  159. return HttpResponse(data)
  160. #分配子账号秘钥
  161. class New_Code(ListView):
  162. def get(self, request):
  163. word = verification_code().encode("utf-8")
  164. password = hashlib.sha1(word).hexdigest()
  165. pass_word = password[8:]
  166. data = {"dat": pass_word}
  167. data = json.dumps(data)
  168. return HttpResponse(data)
  169. #分配测报员账号接口
  170. class New_Reporter(ListView):
  171. def post(self, request):
  172. names = request.POST.get("username")
  173. password = request.POST.get("password")
  174. phone = request.POST.get("phone")
  175. addr = request.POST.get("addr")
  176. user_por = request.POST.get("user_por")
  177. user_city = request.POST.get("user_city")
  178. user_area = request.POST.get("user_area")
  179. code = request.POST.get("code")
  180. name = request.session.get("username")
  181. user_name = MyUser.objects.get(username=name)
  182. if not all([names,password,user_area,user_city,user_por,code,name,user_name]):
  183. data = 0
  184. return HttpResponse(data)
  185. prov = Address_Province.objects.get(code=user_por) # 省
  186. prov = str(prov)
  187. citys = Address_Province.objects.get(code=user_city) # 市
  188. citys = str(citys)
  189. areaes = Address_Province.objects.get(code=user_area) # 区
  190. areaes = str(areaes)
  191. addrs = prov + citys + areaes + addr
  192. reporter = User_Reporter.objects.filter(user_id=user_name)
  193. num = reporter.count()
  194. if num == 3:
  195. data = 2
  196. return HttpResponse(data)
  197. else:
  198. if reporter:
  199. for i in reporter:
  200. if i.name == names:
  201. data = 0
  202. print("该{}账号下已存在{}".format(i.name, names))
  203. return HttpResponse(data)
  204. else:
  205. password = make_password(password)
  206. User_Reporter.objects.create(
  207. user_id=user_name, name=names, password=password, phone=phone, addr=addrs)
  208. Encryption.objects.create(cipher=code)
  209. data = 1
  210. return HttpResponse(data)
  211. else:
  212. password = make_password(password)
  213. User_Reporter.objects.create(
  214. user_id=user_name, name=names, password=password, phone=phone, addr=addrs)
  215. Encryption.objects.create(cipher=code)
  216. data = 1
  217. return HttpResponse(data)
  218. #生成激活码主账号激活码
  219. class Activation_Code(ListView):
  220. def get(self, request):
  221. name = request.session.get("username")
  222. print("name:", name)
  223. uid = MyUser.objects.get(username=name)
  224. if uid.is_superuser == True and uid.is_staff == True and uid.is_active == True:
  225. print("管理员")
  226. word = verification_code().encode("utf-8")
  227. password = hashlib.sha1(word).hexdigest()
  228. pass_word = password[8:]
  229. print(pass_word)
  230. Encryption.objects.create(cipher=pass_word)
  231. data = pass_word
  232. else:
  233. print("普通用户")
  234. data = 0
  235. return HttpResponse(data)
  236. #查看主账号下测报员信息
  237. class User_Account(ListView):
  238. def get(self, request):
  239. name = request.session.get("username")
  240. uid = MyUser.objects.get(username=name)
  241. data = []
  242. account = User_Account.objects.filter(user_id=uid)
  243. for i in account:
  244. data.append({
  245. "name": i.name,
  246. "phone": i.phone,
  247. "time": i.time.strftime("%Y-%m-%d %H:%M:%S"),
  248. "addr": i.addr,
  249. "id": i.id,
  250. "user_id": i.user_id.username
  251. })
  252. data = json.dumps(data)
  253. return HttpResponse(data)
  254. #重置测报员密码
  255. def post(self, request):
  256. password = request.POST.get("password")
  257. password1 = request.POST.get("password1")
  258. cbyid = request.POST.get("id")
  259. if not all([password,password1,cbyid]):
  260. data = 0
  261. return HttpResponse(data)
  262. user_list = User_Reporter.objects.get(id=cbyid)
  263. if password == password1:
  264. password = make_password(password)
  265. user_list.password = password
  266. user_list.save()
  267. data = 1
  268. else:
  269. data = 0
  270. return HttpResponse(data)
  271. #查看主用户下所有的测报员的信息,所有的识别记录 、已录信息
  272. class Check_Account(ListView):
  273. def get(self, request):
  274. ret = request.GET.get("ret")
  275. req = request.GET.get("req")
  276. page = int(request.GET.get("page"))
  277. name = request.session.get("username")
  278. # name = "admin"
  279. print("name", name)
  280. user_name = MyUser.objects.get(username=name)
  281. if not all([ret,req,page,name,user_name]):
  282. data = 0
  283. return HttpResponse(data)
  284. data = []
  285. gly = ''
  286. if user_name.is_superuser == True and user_name.is_staff == True and user_name.is_active == True:
  287. print("管理员")
  288. if ret == "2":
  289. insects = App_Insect.objects.filter(~Q(name=None))
  290. elif ret == "1":
  291. insects = App_Plant.objects.filter(~Q(name=None))
  292. gly = 1
  293. else:
  294. print("普通用户")
  295. if ret == "2":
  296. insects = App_Insect.objects.filter(~Q(name=None), userid=user_name)
  297. elif ret == "1":
  298. insects = App_Plant.objects.filter(~Q(name=None), userid=user_name)
  299. if gly == 1: #指明是登录身份是管理员
  300. insect = User_Data_Table_New.objects.filter(harm_id__pest_sort=ret)
  301. else:
  302. insect = User_Data_Table_New.objects.filter(user_id__user_id=user_name,harm_id__pest_sort=ret)
  303. if req == "cord": # 已录信息
  304. for i in insect:
  305. data.append({"user_name":i.user_id.name,"growth_stages":i.growth_stages,"area":i.area,"pest_name":i.harm_id.pest_name,"month":i.harm_id.month_id.month,
  306. "pest":i.harm_id.pest,"crop_sort":i.harm_id.crop_sort,"cens_method":i.cens_method,"city":i.harm_id.month_id.addr_id.name,"id":i.id,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  307. ,"city_id":i.harm_id.month_id.addr_id.id,"harm_id":i.harm_id.id,"pest_sort":i.harm_id.pest_sort,"username":i.user_id.user_id.username,
  308. })
  309. num = insect.count()
  310. elif req == "disc": #识别信息
  311. for x in insects:
  312. data.append({"username": x.userid.username, "reporter": x.reporter_id.name, "time": x.time.strftime("%Y-%m-%d %H:%M:%S"), "course": x.course,
  313. "name": x.name, "addr": x.addr, "id": x.id, "ret": ret, "req": req})
  314. num = insects.count()
  315. dat = data[(10*(page-1)):(page*10)]
  316. data = {"dat": dat, "num": num}
  317. data = json.dumps(data)
  318. return HttpResponse(data)
  319. #查看已录和识别数据详情信息
  320. def post(self, request):
  321. account_id = request.POST.get("id")
  322. ret = request.POST.get("ret")
  323. req = request.POST.get("req")
  324. dats = [] #病虫害照片列表
  325. date = [] # 病虫害值
  326. data = [] #数据列表
  327. if ret == "2":
  328. insect = App_Insect.objects.filter(id=account_id)
  329. elif ret == "1":
  330. insect = App_Plant.objects.filter(id=account_id)
  331. if req == "cord":
  332. user_list = User_Data_Table_New.objects.filter(id=account_id)
  333. for i in user_list:
  334. #病害级别转换成list
  335. pestname = eval(i.pestname)
  336. key = list(pestname)
  337. valu = list(pestname.values())
  338. for x in range(len(key)):
  339. date.append({key[x]: valu[x]})
  340. # da.append(i.pestname)
  341. #判断用户上传的图片是多张还是一张进行切割
  342. if i.addr_photo.find(",") != -1:
  343. prc_list = i.addr_photo.split(",")
  344. for y in prc_list:
  345. dats.append(y)
  346. else:
  347. dats.append(i.addr_photo)
  348. data.append({"user_name":i.user_id.name,"growth_stages":i.growth_stages,"addr_photo":dats,"pestname":date,"area":i.area,"pest_name":i.harm_id.pest_name,"month":i.harm_id.month_id.month,
  349. "pest":i.harm_id.pest,"crop_sort":i.harm_id.crop_sort,"cens_method":i.cens_method,"city":i.harm_id.month_id.addr_id.name,"id":i.id,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  350. ,"city_id":i.harm_id.month_id.addr_id.id,"harm_id":i.harm_id.id,"pest_sort":i.harm_id.pest_sort,"username":i.user_id.user_id.username,
  351. })
  352. elif req == "disc":
  353. for x in insect:
  354. data.append({"username": x.userid.username, "reporter": x.reporter_id.name, "time": x.time.strftime("%Y-%m-%d %H:%M:%S"), "course": x.course,
  355. "name": x.name, "addr": x.addr, "img": x.img.name, "img_urls": x.img_urls, "prevention": x.prevention, "id": x.id, "ret": ret, "req": req,"lat": x.lat, "lng": x.lng,
  356. })
  357. data = json.dumps(data)
  358. return HttpResponse(data)
  359. #删除测报员账号
  360. class Del_Account(ListView):
  361. def post(self, request):
  362. cbyid = request.POST.get("id")
  363. if not all([cbyid]):
  364. data = 0
  365. return HttpResponse(data)
  366. try:
  367. user_list = User_Reporter.objects.get(id=cbyid).delete()
  368. data = 1
  369. except Exception as e:
  370. print(e)
  371. data = 0
  372. return HttpResponse(data)
  373. #删除指定数据 只删除数据,但是图片保留
  374. class Del_Mation(ListView):
  375. def post(self,request):
  376. ids = request.POST.get("id")
  377. ret = request.POST.get("ret")
  378. data = []
  379. try:
  380. if ret == "2":
  381. insects = App_Insect.objects.get(id=ids)
  382. if os.path.exists(insects.img):
  383. os.remove(insects.img)
  384. elif ret == "1":
  385. insects = App_Plant.objects.get(id=ids)
  386. if os.path.exists(insects.img):
  387. os.remove(insects.img)
  388. else:
  389. insects = User_Data_Table_New.objects.get(id=ids)
  390. if insects.addr_photo.find(",") != -1:
  391. pic_list = insects.addr_photo.split(",")
  392. for x in pic_list:
  393. if os.path.exists(x):
  394. os.remove(x)
  395. else:
  396. print(insects.addr_photo)
  397. if os.path.exists(insects.addr_photo):
  398. os.remove(insects.addr_photo)
  399. insects.delete()
  400. data = 1
  401. except Exception as e:
  402. data = 0
  403. print(e)
  404. return HttpResponse(data)
  405. #测报员数据页面
  406. class See_Account(ListView):
  407. def get(self, request):
  408. return render(request, "pestDiagnosis/dataList.html", context={})
  409. #测报员数据详情页面
  410. class See_Mation(ListView):
  411. def get(self, request):
  412. return render(request, "pestDiagnosis/details.html", context={})
  413. #查看指定测报员下的数据,
  414. class Look_Account(ListView):
  415. def post(self, request):
  416. ret = request.POST.get("ret")
  417. print("ret",ret)
  418. req = request.POST.get("req")
  419. print("req",req)
  420. reporter_id = request.POST.get("id")
  421. print(reporter_id)
  422. page = int(request.POST.get("page"))
  423. dat = []
  424. da = []
  425. data = []
  426. if ret == "2":
  427. insect = App_Insect.objects.filter(~Q(name=None),reporter_id=reporter_id)
  428. elif ret == "1":
  429. insect = App_Plant.objects.filter(~Q(name=None),reporter_id=reporter_id)
  430. if req == "cord": # 已录信息
  431. insect = User_Data_Table_New.objects.filter(harm_id__pest_sort=ret, user_id=reporter_id)
  432. for i in insect:
  433. data.append({"user_name":i.user_id.name,"growth_stages":i.growth_stages,"area":i.area,"pest_name":i.harm_id.pest_name,"month":i.harm_id.month_id.month,
  434. "pest":i.harm_id.pest,"crop_sort":i.harm_id.crop_sort,"cens_method":i.cens_method,"city":i.harm_id.month_id.addr_id.name,"id":i.id,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  435. ,"city_id":i.harm_id.month_id.addr_id.id,"harm_id":i.harm_id.id,"pest_sort":i.harm_id.pest_sort,"username":i.user_id.user_id.username,
  436. })
  437. elif req == "disc": #识别记录
  438. for x in insect:
  439. data.append({"username": x.userid.username, "reporter": x.reporter_id.name, "time": x.time.strftime("%Y-%m-%d %H:%M:%S"), "course": x.course, "name": x.name,
  440. "addr": x.addr, "id": x.id, "ret": ret, "req": req
  441. })
  442. num = insect.count()
  443. dat = data[(10*(page-1)):(page*10)]
  444. data = {"dat": dat, "num": num}
  445. data = json.dumps(data)
  446. print("data",data)
  447. return HttpResponse(data)
  448. #按病虫害名字进行筛选和筛选某一测报员下病虫害名字数据
  449. class Screen_Name(ListView):
  450. def post(self, request):
  451. ret = request.POST.get("ret")
  452. req = request.POST.get("req")
  453. plant_name = request.POST.get("name")
  454. page = int(request.POST.get("page"))
  455. name = request.session.get("username")
  456. repor_id = request.POST.get("id")
  457. print("name", name)
  458. # name = "admin"
  459. user_name = MyUser.objects.get(username=name)
  460. print(user_name)
  461. data = []
  462. #__contains 模糊查询
  463. if ret == "2":
  464. insects = App_Insect.objects.filter(Q(name__contains=plant_name,userid=user_name) | Q(name__contains=plant_name,reporter_id=repor_id) )
  465. elif ret == "1":
  466. insects = App_Plant.objects.filter(Q(name__contains=plant_name,userid=user_name) | Q(name__contains=plant_name,reporter_id=repor_id))
  467. if req == "cord": #已录数据
  468. insects = User_Data_Table_New.objects.filter(Q(harm_id__pest_name__contains=plant_name,harm_id__pest_sort=ret,user_id__user_id__username=user_name) | Q (harm_id__pest_name__contains=plant_name,harm_id__pest_sort=ret,user_id=repor_id))
  469. for i in insects:
  470. data.append({"user_name":i.user_id.name,"growth_stages":i.growth_stages,"area":i.area,"pest_name":i.harm_id.pest_name,"month":i.harm_id.month_id.month,
  471. "pest":i.harm_id.pest,"crop_sort":i.harm_id.crop_sort,"cens_method":i.cens_method,"city":i.harm_id.month_id.addr_id.name,"id":i.id,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  472. ,"city_id":i.harm_id.month_id.addr_id.id,"harm_id":i.harm_id.id,"pest_sort":i.harm_id.pest_sort,"username":i.user_id.user_id.username,
  473. })
  474. elif req == "disc": #识别信息
  475. for x in insects:
  476. data.append({"username": x.userid.username, "reporter": x.reporter_id.name, "time": x.time.strftime("%Y-%m-%d %H:%M:%S"), "course": x.course,
  477. "name": x.name, "addr": x.addr, "id": x.id, "ret": ret, "req": req})
  478. num = insects.count()
  479. dat = data[(10*(page-1)):(page*10)]
  480. data = {"dat": dat, "num": num}
  481. data = json.dumps(data)
  482. return HttpResponse(data)
  483. #按时间段筛选
  484. class Screen_Hour(ListView):
  485. def post(self, request):
  486. ret = request.POST.get("ret")
  487. req = request.POST.get("req")
  488. start_time = request.POST.get("stat_time")
  489. end_time = request.POST.get("end_time")
  490. page = int(request.POST.get("page"))
  491. data = []
  492. name = request.session.get("username")
  493. print("name", name)
  494. # name = "admin"
  495. user_name = MyUser.objects.get(username=name)
  496. if ret == "2":
  497. insects = App_Insect.objects.filter(~Q(name=None),userid=user_name,time__range=(start_time,end_time))
  498. elif ret == "1":
  499. insects = App_Plant.objects.filter(~Q(name=None),userid=user_name,time__range=(start_time,end_time))
  500. if req == "cord":
  501. inseects = User_Data_Table_New.objects.filter(user_id__user_id__username=user_name,upl_time__range=(start_time,end_time))
  502. for i in insects:
  503. data.append({"user_name":i.user_id.name,"growth_stages":i.growth_stages,"area":i.area,"pest_name":i.harm_id.pest_name,"month":i.harm_id.month_id.month,
  504. "pest":i.harm_id.pest,"crop_sort":i.harm_id.crop_sort,"cens_method":i.cens_method,"city":i.harm_id.month_id.addr_id.name,"id":i.id,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  505. ,"city_id":i.harm_id.month_id.addr_id.id,"harm_id":i.harm_id.id,"pest_sort":i.harm_id.pest_sort,"username":i.user_id.user_id.username,
  506. })
  507. elif req == "disc":
  508. for x in insects:
  509. data.append({"username": x.userid.username, "reporter": x.reporter_id.name, "time": x.time.strftime("%Y-%m-%d %H:%M:%S"), "course": x.course,
  510. "name": x.name, "addr": x.addr, "id": x.id, "ret": ret, "req": req})
  511. num = insects.count()
  512. dat = data[(10*(page-1)):(page*10)]
  513. data = {"dat": dat, "num": num}
  514. data = json.dumps(data)
  515. return HttpResponse(data)
  516. # #测报员下病虫害名字筛选
  517. # class Screen_Pests_Name(ListView):
  518. # def post(self, request):
  519. # ret = request.POST.get("ret")
  520. # req = request.POST.get("req")
  521. # bch_name = request.POST.get("name")
  522. # page = int(request.POST.get("page"))
  523. # cby_id = request.POST.get("id")
  524. # data = []
  525. # if not all ([ret,bch_name,cby_id,req,page]):
  526. # data = 0
  527. # return HttpResponse(data)
  528. # #__contains 模糊查询
  529. # if ret == "insect":
  530. # types = "2"
  531. # genre = "虫害"
  532. # insects = App_Insect.objects.filter(name__contains=bch_name,reporter_id=cby_id)
  533. # elif ret == "plant":
  534. # types = "1"
  535. # genre = "病害"
  536. # insects = App_Plant.objects.filter(name__contains=bch_name,reporter_id=cby_id)
  537. # if req == "cord":
  538. # insects = User_Data_Table.objects.filter(names__contains=bch_name,statistical=types,reporter_id=cby_id)
  539. # for i in insects:
  540. # data.append({"user_id": i.user_id.username, "reporter_id": i.reporter_id.name, "time": i.time.strftime("%Y-%m-%d %H:%M:%S"),
  541. # "user_city": i.user_city, "insect_sort": i.insect_sort, "area": i.area, "names": i.names, "genre": genre, "statistical_method": i.statistical_method,
  542. # "id": i.id, "ret": ret, "req": req})
  543. # elif req == "disc":
  544. # for x in insects:
  545. # data.append({"username": x.userid.username, "reporter": x.reporter_id.name, "time": x.time.strftime("%Y-%m-%d %H:%M:%S"), "course": x.course,
  546. # "name": x.name, "addr": x.addr, "id": x.id, "ret": ret, "req": req,"genre":genre})
  547. # num = insects.count()
  548. # dat = data[(10*(page-1)):(page*10)]
  549. # data = {"dat": dat, "num": num}
  550. # data = json.dumps(data)
  551. # return HttpResponse(data)
  552. #测报员下时间段筛选
  553. class Screen_Extent_Time(ListView):
  554. def post(self, request):
  555. ret = request.POST.get("ret")
  556. req = request.POST.get("req")
  557. start_time = request.POST.get("stat_time")
  558. end_time = request.POST.get("end_time")
  559. page = int(request.POST.get("page"))
  560. reporter_id = request.POST.get("id")
  561. data = []
  562. if ret == "2":
  563. insects = App_Insect.objects.filter(~Q(name=None),reporter_id=reporter_id,time__range=(start_time,end_time))
  564. elif ret == "1":
  565. insects = App_Plant.objects.filter(~Q(name=None),reporter_id=reporter_id,time__range=(start_time,end_time))
  566. if req == "cord":
  567. inseects = User_Data_Table_New.objects.filter(user_id=reporter_id,upl_time__range=(start_time,end_time))
  568. for i in insects:
  569. data.append({"user_name":i.user_id.name,"growth_stages":i.growth_stages,"area":i.area,"pest_name":i.harm_id.pest_name,"month":i.harm_id.month_id.month,
  570. "pest":i.harm_id.pest,"crop_sort":i.harm_id.crop_sort,"cens_method":i.cens_method,"city":i.harm_id.month_id.addr_id.name,"id":i.id,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  571. ,"city_id":i.harm_id.month_id.addr_id.id,"harm_id":i.harm_id.id,"pest_sort":i.harm_id.pest_sort,"username":i.user_id.user_id.username,
  572. })
  573. elif req == "disc":
  574. for x in insects:
  575. data.append({"username": x.userid.username, "reporter": x.reporter_id.name, "time": x.time.strftime("%Y-%m-%d %H:%M:%S"), "course": x.course,
  576. "name": x.name, "addr": x.addr, "id": x.id, "ret": ret, "req": req})
  577. num = insects.count()
  578. dat = data[(10*(page-1)):(page*10)]
  579. data = {"dat": dat, "num": num}
  580. data = json.dumps(data)
  581. return HttpResponse(data)
  582. # 导出excel文件指定测报员下虫害、病害、指定数据
  583. class Export_Excel(ListView):
  584. def get(self, request):
  585. reporter_id = request.GET.get("id")
  586. ret = request.GET.get("ret")
  587. name = request.session.get("username")
  588. print("name", name)
  589. # name = "admin"
  590. user_name = MyUser.objects.get(username=name)
  591. # 创建一个文件对象
  592. wb = xlwt.Workbook(encoding="utf8")
  593. # 创建一个sheet对象
  594. sheet = wb.add_sheet("sheet1",cell_overwrite_ok=True)
  595. # 设置文件头的样式,这个不是必须的可以根据自己的需求进行更改
  596. style_heading = xlwt.easyxf("""
  597. font:
  598. name Arial,
  599. colour_index white,
  600. bold on,
  601. height 0xA0;
  602. align:
  603. wrap off,
  604. vert center,
  605. horiz center;
  606. pattern:
  607. pattern solid,
  608. fore-colour 0x19;
  609. borders:
  610. left THIN,
  611. right THIN,
  612. top THIN,
  613. bottom THIN;
  614. """)
  615. # 写入文件标题
  616. sheet.write(0, 0, "测报员", style_heading)
  617. sheet.write(0, 1, "创建时间", style_heading)
  618. sheet.write(0, 2, "详细地址", style_heading)
  619. sheet.write(0, 3, "所属分类", style_heading)
  620. sheet.write(0, 4, "统计面积", style_heading)
  621. sheet.write(0, 5, "病害虫害名称", style_heading)
  622. sheet.write(0, 6, "病害值", style_heading)
  623. sheet.write(0, 7, "统计种类", style_heading)
  624. sheet.write(0, 8, "统计方法", style_heading)
  625. sheet.write(0, 9, "生育期", style_heading)
  626. sheet.write(0, 10, "月份", style_heading)
  627. data_row = 1
  628. date = []
  629. # if ret == "insect": #虫害
  630. # types = "2"
  631. # user_list = User_Data_Table.objects.filter(reporter_id=cbyid,statistical=types)
  632. # elif ret == "plant": # 病害
  633. # types = "1"
  634. # user_list = User_Data_Table.objects.filter(reporter_id=cbyid, statistical=types)
  635. if ret == "addr": #单条
  636. user_list = User_Data_Table_New.objects.filter(id=reporter_id)
  637. elif ret == "whole": #该测报员下所有已录数据
  638. user_list = User_Data_Table_New.objects.filter(user_id=reporter_id)
  639. else:
  640. user_list = User_Data_Table_New.objects.filter(user_id=reporter_id,harm_id__pest_sort=ret)
  641. # else:
  642. # data = 0
  643. # return HttpResponse(data)
  644. for i in user_list:
  645. if i.harm_id.pest_sort == "1":
  646. pest_sort = "病害"
  647. elif i.harm_id.pest_sort == "2":
  648. pest_sort = "虫害"
  649. pestname = eval(i.pestname)
  650. key = list(pestname)
  651. valu = list(pestname.values())
  652. for x in range(len(key)):
  653. date.append(key[x] + ":" + valu[x])
  654. # date.append(i.pestname)
  655. pri_time = i.upl_time.strftime("%Y-%m-%d")
  656. sheet.write(data_row, 0, i.user_id.name)
  657. sheet.write(data_row, 1, pri_time)
  658. sheet.write(data_row, 2, i.harm_id.month_id.addr_id.name)
  659. sheet.write(data_row, 3, i.harm_id.pest)
  660. sheet.write(data_row, 4, i.area)
  661. sheet.write(data_row, 5, i.harm_id.pest_name)
  662. sheet.write(data_row, 6, date)
  663. sheet.write(data_row, 7, i.harm_id.pest_sort)
  664. sheet.write(data_row, 8, i.cens_method)
  665. sheet.write(data_row, 9, i.growth_stages)
  666. sheet.write(data_row, 10, i.harm_id.month_id.month)
  667. data_row = data_row + 1
  668. output = BytesIO()
  669. wb.save(output)
  670. output.seek(0)
  671. # 后端进行保存,前端进行下载
  672. # 设置HTTPResponse的类型
  673. response = HttpResponse(content_type="application/vnd.ms-excel")
  674. response["Content-Disposition"] = "attachment;filename={}.xls".format(user_name)
  675. response.write(output.getvalue())
  676. return response
  677. #导出主账号下所有已录信息
  678. class Export_Mation(ListView):
  679. def get(self, request):
  680. ret = request.GET.get("ret")
  681. name = request.session.get("username")
  682. print("name", name)
  683. # name = "admin"
  684. user_name = MyUser.objects.get(username=name)
  685. # 创建一个文件对象
  686. wb = xlwt.Workbook(encoding="utf8")
  687. # 创建一个sheet对象
  688. sheet = wb.add_sheet("sheet1",cell_overwrite_ok=True)
  689. # 设置文件头的样式,这个不是必须的可以根据自己的需求进行更改
  690. style_heading = xlwt.easyxf("""
  691. font:
  692. name Arial,
  693. colour_index white,
  694. bold on,
  695. height 0xA0;
  696. align:
  697. wrap off,
  698. vert center,
  699. horiz center;
  700. pattern:
  701. pattern solid,
  702. fore-colour 0x19;
  703. borders:
  704. left THIN,
  705. right THIN,
  706. top THIN,
  707. bottom THIN;
  708. """)
  709. # 写入文件标题
  710. sheet.write(0, 0, "测报员", style_heading)
  711. sheet.write(0, 1, "创建时间", style_heading)
  712. sheet.write(0, 2, "详细地址", style_heading)
  713. sheet.write(0, 3, "所属分类", style_heading)
  714. sheet.write(0, 4, "统计面积", style_heading)
  715. sheet.write(0, 5, "病害虫害名称", style_heading)
  716. sheet.write(0, 6, "病害值", style_heading)
  717. sheet.write(0, 7, "统计种类", style_heading)
  718. sheet.write(0, 8, "统计方法", style_heading)
  719. sheet.write(0, 9, "生育期", style_heading)
  720. sheet.write(0, 10, "月份", style_heading)
  721. data_row = 1
  722. date = []
  723. if ret == "user": #全部
  724. user_list = User_Data_Table_New.objects.filter(user_id__user_id=user_name)
  725. else:
  726. user_list = User_Data_Table_New.objects.filter(user_id__user_id=user_name, harm_id__pest_sort=ret)
  727. for i in user_list:
  728. if i.harm_id.pest_sort == "1":
  729. pest_sort = "病害"
  730. elif i.harm_id.pest_sort == "2":
  731. pest_sort = "虫害"
  732. pestname = eval(i.pestname)
  733. key = list(pestname)
  734. valu = list(pestname.values())
  735. for x in range(len(key)):
  736. date.append(key[x] + ":" + valu[x])
  737. # date.append(i.pestname)
  738. pri_time = i.upl_time.strftime("%Y-%m-%d")
  739. sheet.write(data_row, 0, i.user_id.name)
  740. sheet.write(data_row, 1, pri_time)
  741. sheet.write(data_row, 2, i.harm_id.month_id.addr_id.name)
  742. sheet.write(data_row, 3, i.harm_id.pest)
  743. sheet.write(data_row, 4, i.area)
  744. sheet.write(data_row, 5, i.harm_id.pest_name)
  745. sheet.write(data_row, 6, date)
  746. sheet.write(data_row, 7, i.harm_id.pest_sort)
  747. sheet.write(data_row, 8, i.cens_method)
  748. sheet.write(data_row, 9, i.growth_stages)
  749. sheet.write(data_row, 10, i.harm_id.month_id.month)
  750. data_row = data_row + 1
  751. output = BytesIO()
  752. wb.save(output)
  753. output.seek(0)
  754. # 后端进行保存,前端进行下载
  755. # 设置HTTPResponse的类型
  756. response = HttpResponse(content_type="application/vnd.ms-excel")
  757. response["Content-Disposition"] = "attachment;filename={}.xls".format(user_name)
  758. response.write(output.getvalue())
  759. return response
  760. #扫码下载
  761. class App_Upder(ListView):
  762. def get(self, request):
  763. return render(request, "home/appDownload.html")
  764. #扫码下载(针对赵珍统计器)
  765. class App_Upder2(ListView):
  766. def get(self, request):
  767. return render(request, "home/appDownload2.html")
  768. #已录信息饼状图统计页面
  769. class Pie_Chart(ListView):
  770. def get(self, request):
  771. return render(request,"pestDiagnosis/insectStatistics.html", context={})
  772. #已录信息饼状图数据展示
  773. class Show_Pie_Chart(ListView):
  774. def get(self, request):
  775. ret = request.GET.get("ret")
  776. name = request.session.get("username")
  777. print("name", name)
  778. # name = "admin"
  779. user_name = MyUser.objects.get(username=name)
  780. data = []
  781. date = []
  782. user_list = User_Data_Table_New.objects.filter(user_id__user_id=user_name,harm_id__pest_sort=ret)
  783. if user_list:
  784. for i in user_list:
  785. num = user_list.objects.filter(harm_id__pest_name=i.names).count()
  786. date.append({"name":i.names,"value":num})
  787. for x in date:
  788. if x not in data:
  789. data.append(x)
  790. data = json.dumps(data)
  791. return HttpResponse(data)
  792. #已录信息柱状图
  793. class Line_Chart(ListView):
  794. def get(self,request):
  795. name = request.session.get("username")
  796. # name = "admin"
  797. user_name = MyUser.objects.get(username=name)
  798. data = []
  799. user_list = User_Reporter.objects.filter(user_id=user_name)
  800. for i in user_list:
  801. plant = str(User_Data_Table_New.objects.filter(user_id=i.id,harm_id__pest_sort="1").count())
  802. insect = str(User_Data_Table_New.objects.filter(user_id=i.id,harm_id__pest_sort="2").count())
  803. data.append({"name":i.name,"cby_plant":plant,"cby_insect":insect})
  804. data = json.dumps(data)
  805. return HttpResponse(data)
  806. #已录信息害虫统计报表
  807. class Reporting(ListView):
  808. def get(self, request):
  809. name = request.session.get("username")
  810. user_name = MyUser.objects.get(username=name)
  811. data = []
  812. user_list = User_Reporter.objects.filter(user_id=user_name)
  813. for i in user_list:
  814. data.append({"id":i.id,"name":i.name})
  815. data = json.dumps(data)
  816. return HttpResponse(data)
  817. def post(self, request):
  818. ret = request.POST.get("ret")
  819. reporter_id = request.POST.get("id")
  820. page = int(request.POST.get("page"))
  821. data = []
  822. user_list = User_Data_Table_New.objects.filter(user_id=reporter_id,harm_id__pest_sort=ret)
  823. for i in user_list:
  824. data.append({"name":i.harm_id.pest_name,"cby_name":i.user_id.name,"time":i.upl_time.strftime("%Y-%m-%d %H:%M:%S")})
  825. num = user_list.count()
  826. dat = data[(10*(page-1)):(page*10)]
  827. data = {"dat": dat, "num": num}
  828. data = json.dumps(data)
  829. return HttpResponse(data)
  830. #数据重传
  831. class again_data(View):
  832. def post(self,request):
  833. username = request.POST.get("username")
  834. start_time = request.POST.get('start_time')
  835. end_time = request.POST.get('end_time')
  836. imei = request.POST.get("imei")
  837. data_url = request.POST.get("data_url")
  838. img_url = request.POST.get("img_url")
  839. ret = int(request.POST.get("ret"))
  840. #时间切割
  841. begindate = re.findall(r"\d+\.?\d*", start_time)
  842. enddate = re.findall(r"\d+\.?\d*", end_time)
  843. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  844. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  845. if username == "admin":
  846. if ret == 2:
  847. scd_sta = SCDstatus_all.objects.filter(equip_id__equip_id=imei,upl_time__range=(start_date,end_date))
  848. scd_dat = SCDdata.objects.filter(equip_id__equip_id=imei,upl_time__range=(start_date,end_date))
  849. for i in scd_sta: #状态数据
  850. data = eval(i.scd_status)
  851. data = json.dumps(data)
  852. res = requests.post(data_url,data=data,timeout=(50,100))
  853. print(res.status_code)
  854. for x in scd_dat: #全部数据
  855. data = eval(x.scd_data)
  856. data = json.dumps(data)
  857. res = requests.post(data_url,data=data,timeout=(50,100))
  858. print(res.status_code)
  859. elif ret == 3:
  860. cbd_sta = CBDstatus_all.objects.filter(equip_id__equip_id=imei,upl_time__range=(start_date,end_date))
  861. cbd_dat = CBDdata.objects.filter(equip_id__equip_id=imei,upl_time__range=(start_date,end_date))
  862. requests.adapters.DEFAULT_RETRIES = 5 # 增加重连次数
  863. s = requests.session()
  864. s.keep_alive = False # 关闭多余连接
  865. if data_url:
  866. for i in cbd_sta: #状态数据
  867. data = eval(i.cbd_status)
  868. datt = {"topic": "/yfkj/cbd/pub/868956044831620", "payload":{"cmd":"status", "ext":data}}
  869. data = json.dumps(datt)
  870. time.sleep(0.1)
  871. res = requests.post(data_url,data=data,timeout=(50,100))
  872. print(res.status_code)
  873. for x in cbd_dat: #全部数据
  874. data = eval(x.cbd_data)
  875. datt = {"topic": "/yfkj/cbd/pub/868956044831620", "payload":{"cmd":"data", "ext":data}}
  876. data = json.dumps(datt)
  877. time.sleep(0.2)
  878. res = requests.post(data_url,data=data,timeout=(50,100))
  879. print(res.status_code)
  880. else:
  881. cbd_img_list = CBDphoto.objects.filter(equip_id__equip_id=imei,upl_time__range=(start_date,end_date))
  882. equip = Equip.objects.get(equip_id=imei)
  883. if equip.ftp_addr:
  884. # http://120.27.222.26/cbd/pyftp/ftp_file/ykm_cbd/868575028845867/20190305/20:56:15.jpg
  885. ftp_addr = equip.ftp_addr
  886. pattern = r'[#]'
  887. split_result = re.split(pattern, ftp_addr)
  888. print("split_result:",split_result)
  889. try:
  890. need_result = split_result[1]
  891. except:
  892. print("对接设备的地址填写有误!请检查!")
  893. need_result = "0"
  894. if need_result == "1": #带识别
  895. for i in cbd_img_list:
  896. # print("1111111111111111111",i.indentify_photo)
  897. img_addr_1 = "http://www.yfzhwlw.com/" + i.addr
  898. if i.indentify_photo:
  899. indentify_photo_1 = "http://www.yfzhwlw.com/" + i.indentify_photo
  900. else:
  901. indentify_photo_1 = None
  902. data = {
  903. "Image":img_addr_1,
  904. "Result_image":indentify_photo_1,
  905. "Result":i.indentify_result,
  906. "imei":imei
  907. }
  908. data = json.dumps(data, cls=CJSONEncoder)
  909. print("data:",data)
  910. time.sleep(0.1)
  911. res_1 = requests.post(img_url,data=data,timeout=(50,100))
  912. print("res_1:",res_1)
  913. print("------------------识别结果发送成功!!!")
  914. else: #不带识别
  915. for i in cbd_img_list:
  916. img_addr_1 = "http://www.yfzhwlw.com/" + i.addr
  917. print("img_addr_1:",img_addr_1)
  918. data = {
  919. "Image":img_addr_1,
  920. "imei":imei
  921. }
  922. data = json.dumps(data, cls=CJSONEncoder)
  923. print("data:",data)
  924. time.sleep(0.1)
  925. res_1 = requests.post(img_url,data=data,timeout=(50,100))
  926. print("res_1:",res_1.text)
  927. elif ret == 7:
  928. bzy_dat = BZYdata.objects.filter(equip_id__equip_id=imei,upl_time__range=(start_date,end_date))
  929. if data_url:
  930. for x in bzy_dat: #全部数据
  931. data = eval(x.bzy_data)
  932. data = json.dumps(data)
  933. headers = {"Content-Type": "application/json; charset=UTF-8", 'Connection': 'close'}
  934. res = requests.post(data_url,data=data,timeout=3,headers=headers)
  935. print(res.status_code)
  936. else:
  937. bzy_img_list = BZYphoto.objects.filter(equip_id__equip_id=imei,upl_time__range=(start_date,end_date))
  938. for i in bzy_img_list:
  939. img_addr_1 = "http://www.yfzhwlw.com/bzy/" + i.addr
  940. data = {
  941. "Image":img_addr_1,
  942. "imei":imei
  943. }
  944. data = json.dumps(data, cls=CJSONEncoder)
  945. print("data:",data)
  946. res_1 = requests.post(img_url,data=data,timeout=2)
  947. print("res_1:",res_1.text)
  948. elif ret == 5:
  949. qxz_list = QXZdata_New.objects.filter(equip_id__equip_id=imei,upl_time__range=(start_date,end_date))
  950. for i in qxz_list:
  951. data = [i.e1,qxz_list.e2,i.e3,i.e4,i.e5,i.e6,i.e7,i.e8,i.e9,i.e10,i.e11,i.e12,i.e13,i.e14,
  952. i.e15,i.e16,i.e17,i.e18,
  953. i.e19,i.e20,i.e21,i.e22,
  954. i.e23,i.e24,i.e25,i.e26,
  955. i.e27,i.e28,i.e29,i.e30]
  956. test = [i for i in data if i != '']
  957. return HttpResponse("0")
  958. import random
  959. #韩英磊曹县测报灯图片上传
  960. class down_img(View):
  961. def post(self,request):
  962. imgs = request.FILES.get("img")
  963. print(imgs)
  964. imei = request.POST.get("imei")
  965. harm_photo_dir = "cbd_img/"+imei+"/2020/06/"
  966. if os.path.exists(harm_photo_dir) == False:
  967. os.makedirs(harm_photo_dir)
  968. img = Image.open(imgs)
  969. end_name = imgs.name.split('.')[-1]
  970. now_time = time.strftime(
  971. '%Y%m%d%H%M%S', time.localtime(time.time()))
  972. pic_name = now_time + '.' + end_name
  973. print("pic_name:", pic_name)
  974. img.save(harm_photo_dir + pic_name)
  975. harm_photos = harm_photo_dir + pic_name
  976. ah = random.randint(100,700)
  977. at = random.randint(100,400)
  978. try:
  979. equip_id = Equip.objects.get(equip_id=imei)
  980. CBDphoto.objects.create(equip_id=equip_id,addr=harm_photos,at=at,ah=ah)
  981. data = {"code":200,"img_path":harm_photos}
  982. except Exception as e:
  983. data = {"code":400,"img_path":harm_photos}
  984. print(e)
  985. data = json.dumps(data)
  986. return HttpResponse(data)
  987. # import qrcode
  988. # # from apps.SystemManage.forms import AddUserForm
  989. # # '''
  990. # # qrcode.make(str):str为二维码包含的文字信息,也可以是网页链接,返回二维码对象
  991. # # qrcode.save(str):将二维码以str为名保存到本地目录(注意文件的扩展名)
  992. # # qrcode.show():运行时展示二维码图案
  993. # # '''
  994. # # #创建包含信息的二维码对象
  995. # # img = qrcode.make("http://baidu.com?id=1")
  996. # # #二维码保存
  997. # # img.save('hello.png')
  998. # # #展示二维码
  999. # # img.show()
  1000. # #生成二维码,请求登录接口
  1001. # class qr_code(View):
  1002. # def get(self,request):
  1003. # img = qrcode.make("http://192.168.1.4:8000/test_log?username=admin&password=yf654321")
  1004. # path = "qr_code/"
  1005. # qr_name = "123.jpg"
  1006. # if os.path.exists(path) == False:
  1007. # os.makedirs(path)
  1008. # print()
  1009. # img.save(path + qr_name)
  1010. # data = {"qr_code":path+qr_name}
  1011. # data = json.dumps(data)
  1012. # return HttpResponse(data)
  1013. # #登录接口
  1014. # class test_log(View):
  1015. # def get(self,request):
  1016. # user_name = request.GET.get("username")
  1017. # pass_word = request.GET.get("password")
  1018. # print("user_name",user_name)
  1019. # print("pass_word",pass_word)
  1020. # HTTP_HOST=request.META['HTTP_HOST']
  1021. # print('HTTP_HOST:',HTTP_HOST)
  1022. # dat = 0
  1023. # try:
  1024. # current_user = MyUser.objects.get(username=user_name)
  1025. # dat = 1
  1026. # except Exception as e:
  1027. # print(e)
  1028. # if dat:
  1029. # if check_password(pass_word, current_user.password) != True:
  1030. # data = {"code":1001,"nums":"密码错误"}
  1031. # else:
  1032. # print('登陆成功')
  1033. # # 将当前登录的用户名写入session
  1034. # if current_user.is_superuser:
  1035. # role = "superuser"
  1036. # elif current_user.is_staff:
  1037. # role = "staff"
  1038. # elif current_user.is_agency:
  1039. # role = "agency"
  1040. # else:
  1041. # role = "user"
  1042. # request.session['username'] = user_name
  1043. # data = {"code":1000,"nums":"登录成功","auth":role}
  1044. # else:
  1045. # data = {"code":1001,"nums":"当前用户不存在"}
  1046. # data = json.dumps(data,ensure_ascii=False)
  1047. # return HttpResponse(data)
  1048. # # num = 1
  1049. # if current_user.is_superuser:
  1050. # role = "superuser"
  1051. # elif current_user.is_staff:
  1052. # role = "staff"
  1053. # elif current_user.is_agency:
  1054. # role = "agency"
  1055. # if Purchase.objects.filter(userid=current_user).exists():
  1056. # pass
  1057. # else:
  1058. # print(current_user.user_agency)
  1059. # if current_user.user_agency:
  1060. # purchase_list = Purchase.objects.filter(userid__user_agency=current_user.user_agency).count()
  1061. # if purchase_list:
  1062. # pass
  1063. # else:
  1064. # num = 0
  1065. # else:
  1066. # num = 0
  1067. # else:
  1068. # role = "user"
  1069. # num = Purchase.objects.filter(userid=current_user).count()
  1070. # # 获取用户所有组:
  1071. # groups = Group.objects.filter(user=current_user)
  1072. # print("groups:", groups)
  1073. # for i in groups:
  1074. # print("##############:",i.name)
  1075. # print("当前用户类型:是否为超级管理员", current_user.is_superuser)
  1076. # # 获取用户的logo组
  1077. # logos = Logo.objects.filter(myuser=current_user)
  1078. # print("logos:",logos)
  1079. # for i in groups:
  1080. # print("##############:",i.name)
  1081. # print("当前用户类型:是否为超级管理员", current_user.is_superuser)
  1082. # print("---------len:",len(logos))
  1083. # if len(logos) == "0":
  1084. # logos == ""
  1085. # else:
  1086. # pass
  1087. # # 超级管理员没有到期时间 提取不到参数时会报错
  1088. # try:
  1089. # # remaining_days=账户还剩多少天
  1090. # remaining_days = (current_user.expire_date - datetime.datetime.now()).days
  1091. # # 账户的具体到期时间
  1092. # user_date = current_user.expire_date
  1093. # # 将账户的具体到期时间转字符串,取年-月-日
  1094. # user_date = datetime.date.strftime(user_date,"%Y-%m-%d %H:%M:%S")[0:10]
  1095. # except:
  1096. # return render(request, 'home/home.html', context={'current_user': current_user, 'role': role, 'groups': groups, 'logos':logos,'have':num})
  1097. # return render(request, 'home/home.html', context={'current_user': current_user, 'role': role, 'groups': groups,
  1098. # 'remaining_days':remaining_days, 'user_date':user_date, 'logos':logos,'have':num})
  1099. # # return render(request, 'home/home.html', context={'user_name': user_name, 'role': role, 'groups': groups})
  1100. # else:
  1101. # form = AddUserForm()
  1102. # # # 读取cookie:
  1103. # # try:
  1104. # # user_name = request.COOKIES.get('uname')
  1105. # # # 从cookie中读出的upwd p1为str:
  1106. # # p1 = request.COOKIES.get('upwd')
  1107. # # # print("type(p1):", type(p1))
  1108. # # # 将str类型的p1转为bytes:p2
  1109. # # p2 = bytes(p1, encoding='utf-8')
  1110. # # # 将p2解密,得到bytes的p3:
  1111. # # p3 = base64.decodestring(p2)
  1112. # # # 将p3转为str:
  1113. # # p4 = str(p3, encoding="utf8")
  1114. # # pass_word = p4
  1115. # # print("读取cookie:用户名:", user_name)
  1116. # # print("读取cookie:用户密码:", pass_word)
  1117. # # except:
  1118. # # user_name = pass_word = None
  1119. # if HTTP_HOST == "www.yfzhwlw.com" or HTTP_HOST == "yfzhwlw.com" or HTTP_HOST == "120.27.222.26":
  1120. # return render(request, 'home/login.html', context={'form': form})
  1121. # # return render(request, 'home/common_login.html', context={'form': form})
  1122. # elif HTTP_HOST == "www.zgzhwlw.com" or HTTP_HOST == "zgzhwlw.com":
  1123. # return render(request, 'home/common_login.html', context={'form': form})
  1124. # elif HTTP_HOST == "127.0.0.1:8000":
  1125. # return render(request, 'home/login.html', context={'form': form})
  1126. # # return render(request, 'home/common_login.html', context={'form': form})
  1127. # elif HTTP_HOST == "localhost:8000":
  1128. # # return render(request, 'home/common_login.html', context={'form': form})
  1129. # return render(request, 'home/common_login.html', context={'form': form})
  1130. # else:
  1131. # return render(request, 'home/login.html', context={'form': form})