views.py 55 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357
  1. # -*- coding: utf-8 -*-
  2. from django.shortcuts import render, redirect
  3. from apps.SystemManage.forms import AddUserForm
  4. from django.http import HttpResponse
  5. from django.template import RequestContext
  6. from django.contrib import auth
  7. from django.contrib.auth import authenticate, login as auth_login, logout
  8. from django.contrib.auth import get_user_model
  9. from django.contrib.auth.models import User, Group, Permission
  10. from django.contrib.auth.hashers import make_password, check_password
  11. from django.contrib.auth.decorators import login_required
  12. from django.views.decorators.csrf import csrf_exempt
  13. from django.views.generic import ListView
  14. from django.views.generic.base import View
  15. import datetime
  16. from PIL import Image
  17. import json
  18. import base64
  19. import redis
  20. from django.core.cache import cache
  21. # from xadmin.models import Log
  22. from apps.AppInfoManage.models import Help, MyUser, User_Group, User_Log, Equip, Equip_type, CBDdata, CBDstatus, SCDstatus, Logo, RecentCBDdata, RecentSCDdata, Equip_SimInfo,\
  23. BZYstatus, CBDphoto, BZYphoto, QXZdata, QXZstatus, VR_Photo, APP_Img, YBQstatus, Purchase, QXZ_Base_Info, Alarm_record
  24. from .forms import LoginForm, ChangePwdForm, UserRegisterForm
  25. from apps.EquipManage.views import CJSONEncoder
  26. from apps.ReportManage.all_dict import qxz_dict, insect_dict, insect_dict_new
  27. import copy
  28. import os
  29. from yfwlw_pro.settings import get_client_ip
  30. # cach = redis.StrictRedis('127.0.0.1',6379)
  31. # cach.set("k1","v1",nx=False)
  32. # kv1 = cach.get("k1")
  33. # print("kv1:",kv1)
  34. #from django.core.exceptions import ObjectDoesNotExist
  35. #from django.utils.datastructures import MultiValueDictKeyError
  36. # from django.conf import settings
  37. # def global_setting(request):#注意有request参数
  38. # CURRENTUSER = settings.CURRENTUSER
  39. # print("全局变量:!")
  40. # print("CURRENTUSER:",CURRENTUSER)
  41. # return locals()
  42. from django.views.decorators.csrf import csrf_exempt
  43. from django.utils.decorators import method_decorator
  44. # 用户登录
  45. @method_decorator(csrf_exempt, name='dispatch')
  46. class Login_View(View):
  47. def get(self, request):
  48. HTTP_HOST=request.META['HTTP_HOST']
  49. print('HTTP_HOST:',HTTP_HOST)
  50. # form = AddUserForm()
  51. # return render(request, 'home/login.html', context={'form': form})
  52. if request.user.is_authenticated():
  53. user_name = request.user.username
  54. print('user_name=', user_name)
  55. current_user = MyUser.objects.get(username=user_name)
  56. if current_user.is_superuser:
  57. role = "superuser"
  58. elif current_user.is_staff:
  59. role = "staff"
  60. elif current_user.is_agency:
  61. role = "agency"
  62. else:
  63. role = "user"
  64. num = 1
  65. if current_user.is_superuser:
  66. role = "superuser"
  67. elif current_user.is_staff:
  68. role = "staff"
  69. elif current_user.is_agency:
  70. role = "agency"
  71. if Purchase.objects.filter(userid=current_user).exists():
  72. pass
  73. else:
  74. print(current_user.user_agency)
  75. if current_user.user_agency:
  76. purchase_list = Purchase.objects.filter(userid__user_agency=current_user.user_agency).count()
  77. if purchase_list:
  78. pass
  79. else:
  80. num = 0
  81. else:
  82. num = 0
  83. else:
  84. role = "user"
  85. num = Purchase.objects.filter(userid=current_user).count()
  86. # 获取用户所有组:
  87. groups = Group.objects.filter(user=current_user)
  88. print("groups:", groups)
  89. for i in groups:
  90. print("##############:",i.name)
  91. print("当前用户类型:是否为超级管理员", current_user.is_superuser)
  92. # 获取用户的logo组
  93. logos = Logo.objects.filter(myuser=current_user)
  94. print("logos:",logos)
  95. for i in groups:
  96. print("##############:",i.name)
  97. print("当前用户类型:是否为超级管理员", current_user.is_superuser)
  98. print("---------len:",len(logos))
  99. if len(logos) == "0":
  100. logos == ""
  101. else:
  102. pass
  103. # 超级管理员没有到期时间 提取不到参数时会报错
  104. try:
  105. # remaining_days=账户还剩多少天
  106. remaining_days = (current_user.expire_date - datetime.datetime.now()).days
  107. # 账户的具体到期时间
  108. user_date = current_user.expire_date
  109. # 将账户的具体到期时间转字符串,取年-月-日
  110. user_date = datetime.date.strftime(user_date,"%Y-%m-%d %H:%M:%S")[0:10]
  111. except:
  112. return render(request, 'home/home.html', context={'user_name': user_name, 'current_user': current_user, 'role': role, 'groups': groups, 'logos':logos,'have':num})
  113. return render(request, 'home/home.html', context={'user_name': user_name, 'current_user': current_user, 'role': role, 'groups': groups,
  114. 'remaining_days':remaining_days, 'user_date':user_date, 'logos':logos,'have':num})
  115. # return render(request, 'home/home.html', context={'user_name': user_name, 'role': role, 'groups': groups})
  116. else:
  117. form = AddUserForm()
  118. # # 读取cookie:
  119. # try:
  120. # user_name = request.COOKIES.get('uname')
  121. # # 从cookie中读出的upwd p1为str:
  122. # p1 = request.COOKIES.get('upwd')
  123. # # print("type(p1):", type(p1))
  124. # # 将str类型的p1转为bytes:p2
  125. # p2 = bytes(p1, encoding='utf-8')
  126. # # 将p2解密,得到bytes的p3:
  127. # p3 = base64.decodestring(p2)
  128. # # 将p3转为str:
  129. # p4 = str(p3, encoding="utf8")
  130. # pass_word = p4
  131. # print("读取cookie:用户名:", user_name)
  132. # print("读取cookie:用户密码:", pass_word)
  133. # except:
  134. # user_name = pass_word = None
  135. if HTTP_HOST == "www.yfzhwlw.com" or HTTP_HOST == "yfzhwlw.com" or HTTP_HOST == "120.27.222.26":
  136. return render(request, 'home/login.html', context={'form': form})
  137. # return render(request, 'home/common_login.html', context={'form': form})
  138. elif HTTP_HOST == "www.zgzhwlw.com" or HTTP_HOST == "zgzhwlw.com":
  139. return render(request, 'home/common_login.html', context={'form': form})
  140. elif HTTP_HOST == "127.0.0.1:8000":
  141. return render(request, 'home/login.html', context={'form': form})
  142. # return render(request, 'home/common_login.html', context={'form': form})
  143. elif HTTP_HOST == "localhost:8000":
  144. # return render(request, 'home/common_login.html', context={'form': form})
  145. return render(request, 'home/common_login.html', context={'form': form})
  146. else:
  147. return render(request, 'home/login.html', context={'form': form})
  148. # return render(request, 'home/common_login.html', context={'form': form})
  149. def post(self, request):
  150. user_name = request.POST.get('username')
  151. pass_word = request.POST.get('password')
  152. print('输入的用户名:', user_name)
  153. user = MyUser.objects.extra(
  154. where=['binary username=%s'], params=[user_name])
  155. print("user.exists():", user.exists())
  156. if user.exists() == False:
  157. data = "1"
  158. return HttpResponse(data)
  159. else:
  160. user = MyUser.objects.get(username=user_name)
  161. if user.is_active != True:
  162. data = "2"
  163. return HttpResponse(data)
  164. else:
  165. if check_password(pass_word, user.password) != True:
  166. data = "3"
  167. return HttpResponse(data)
  168. else:
  169. print('登陆成功')
  170. try:
  171. current_user = MyUser.objects.get(username=user_name)
  172. remaining_days = (current_user.expire_date - datetime.datetime.now()).days
  173. print("账号剩余天数:",remaining_days)
  174. if remaining_days < 30 and remaining_days > 0:
  175. print("账号剩余时间过少,请及时充值")
  176. elif remaining_days <= 0:
  177. return HttpResponse("4")
  178. except Exception as e:
  179. pass
  180. user_has_perm = user.has_perm('apps.EquipList.add_equip')
  181. print('user_has_perm=', user_has_perm)
  182. print("头像:", user.user_picture)
  183. auth_user = authenticate(
  184. username=user_name, password=pass_word)
  185. auth_login(request, auth_user)
  186. # 将当前登录的用户名写入session
  187. request.session['username'] = user_name
  188. if user.is_superuser:
  189. role = "superuser"
  190. elif user.is_staff:
  191. role = "staff"
  192. elif user.is_agency:
  193. role = "agency"
  194. else:
  195. role = "user"
  196. # 记录用户操作记录:
  197. User_Log.objects.create(
  198. log_user=request.user.username, log_ip=get_client_ip(request), log_desc='登录')
  199. data = "0"
  200. returnUrl = request.POST.get('returnUrl')
  201. print("returnUrl:",returnUrl)
  202. if returnUrl == None:
  203. print("returnUrl is none!!!!!!!!")
  204. return HttpResponse(data)
  205. else:
  206. if returnUrl == "":
  207. print("returnUrl is empty")
  208. return render(request, 'reportmanage/cbd_report.html')
  209. elif returnUrl != "":
  210. print("returnUrl is not empty")
  211. return render(request, 'reportmanage/cbd_report.html')
  212. # response = HttpResponse(data)
  213. # response['Access-Control-Allow-Origin'] = '*'
  214. # response['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
  215. # response['Access-Control-Max-Age'] = '1000'
  216. # response['Access-Control-Allow-Headers'] = '*'
  217. # return response
  218. # return HttpResponse(data)
  219. # if is_remember_pwd == "remember":
  220. # print("记住密码")
  221. # data = "0"
  222. # re = HttpResponse(data)
  223. # re.set_cookie('uname', user_name, 3600)
  224. # # 保存密码:先加密
  225. # bpwd = base64.encodestring(
  226. # bytes(pass_word, encoding='utf-8'))
  227. # re.set_cookie('upwd', bpwd, 3600)
  228. # return re
  229. # elif is_remember_pwd == "no":
  230. # print("不记住密码,删除密码")
  231. # data = "0"
  232. # re = HttpResponse(data)
  233. # re.delete_cookie("uname")
  234. # re.delete_cookie("upwd")
  235. # return re
  236. # 首页视图函数
  237. from django.core import serializers
  238. def home(request):
  239. if request.user.is_authenticated():
  240. user_name = request.user.username
  241. current_user = MyUser.objects.get(username=user_name)
  242. print('user_name=', user_name)
  243. print('current_user=', current_user.username)
  244. groups = User_Group.objects.filter(user=current_user)
  245. print("groups:", groups)
  246. # 获取用户的logo组
  247. logos = Logo.objects.filter(myuser=current_user)
  248. print("logos:",logos)
  249. for i in groups:
  250. print("##############:",i.name)
  251. print("当前用户类型:是否为超级管理员", current_user.is_superuser)
  252. print("---------len:",len(logos))
  253. if len(logos) == "0":
  254. logos == ""
  255. else:
  256. pass
  257. # groups_list=[]
  258. # for i in groups:
  259. # groups_list.append(i.name)
  260. # groups_list = ','.join(groups_list)
  261. # print("groups_list:", groups_list)
  262. # 如果是依科曼的用户:
  263. # if "scd" in groups_list:
  264. # if "cbd" in groups_list:
  265. # #杀虫灯和测报灯用户:
  266. # group = "scd+cbd"
  267. # else:
  268. # # 杀虫灯用户:
  269. # group = "scd"
  270. # elif "cbd" in groups_list:
  271. # # 测报灯用户:
  272. # group = "cbd"
  273. # elif "ykm" in groups_list:
  274. # if "ykm" in groups_list:
  275. # # 依科曼测报灯用户:
  276. # group = "ykm"
  277. # else:
  278. # group = "yfkj"
  279. print("当前用户类型:是否为超级管理员", current_user.is_superuser)
  280. if current_user.is_superuser:
  281. role = "superuser"
  282. num = 1
  283. elif current_user.is_staff:
  284. role = "staff"
  285. num = 1
  286. elif current_user.is_agency:
  287. role = "agency"
  288. if Purchase.objects.filter(userid=current_user).exists():
  289. num = 1
  290. else:
  291. print(current_user.user_agency)
  292. if current_user.user_agency:
  293. hh = Purchase.objects.filter(userid__user_agency=current_user.user_agency).count()
  294. if hh:
  295. num = 1
  296. else:
  297. num = 0
  298. else:
  299. num = 0
  300. else:
  301. role = "user"
  302. num = Purchase.objects.filter(userid=current_user).count()
  303. print("num",num)
  304. current_user = MyUser.objects.get(username=user_name)
  305. # 超级管理员没有到期时间 提取不到参数时会报错
  306. try:
  307. # remaining_days=账户还剩多少天
  308. remaining_days = (current_user.expire_date - datetime.datetime.now()).days
  309. # 账户的具体到期时间
  310. user_date = current_user.expire_date
  311. # 将账户的具体到期时间转字符串,取年-月-日
  312. user_date = datetime.date.strftime(user_date,"%Y-%m-%d %H:%M:%S")[0:10]
  313. except:
  314. return render(request, 'home/home.html', context={'current_user': current_user, 'role': role, 'groups': groups, 'logos':logos,'have':num})
  315. return render(request, 'home/home.html', context={'current_user': current_user, 'role': role, 'groups': groups,
  316. 'remaining_days':remaining_days, 'user_date':user_date, 'logos':logos,'have':num})
  317. else:
  318. return redirect('/login')
  319. # 用户注册
  320. from django.utils.decorators import method_decorator
  321. @method_decorator(csrf_exempt, name='dispatch')
  322. class Register_View(View):
  323. def post(self, request):
  324. user_name = request.POST.get('username')
  325. email = request.POST.get('email')
  326. user_phone = request.POST.get('user_phone')
  327. password = request.POST.get('password')
  328. password2 = request.POST.get('password2')
  329. print(user_name)
  330. print(email)
  331. print(user_phone)
  332. print(password)
  333. print(password2)
  334. if(MyUser.objects.extra(where=['binary username=%s'], params=[user_name]).exists() == True):
  335. data = "1"
  336. return HttpResponse(data)
  337. UserModel = get_user_model()
  338. user = UserModel.objects.create_user(
  339. username=user_name, email=email, password=password, user_phone=user_phone)
  340. user.save()
  341. data = "0"
  342. return HttpResponse(data)
  343. @login_required
  344. def home_map(request):
  345. User_Log.objects.create(log_user=request.user.username,
  346. log_ip=get_client_ip(request), log_desc='首页')
  347. current_user = request.session.get('username')
  348. print("请求定位信息!!!")
  349. print("current_user:", current_user)
  350. current_user = MyUser.objects.get(username=current_user)
  351. print("请求杀虫灯定位!")
  352. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  353. print("---不是管理员")
  354. sta1 = SCDstatus.objects.filter(
  355. equip_id__equip_user=current_user)
  356. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  357. print("---代理商")
  358. sta1 = SCDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  359. else:
  360. print("---管理员")
  361. sta1 = SCDstatus.objects.all()
  362. return render(request, 'home/home_map.html', context={"scdlist":sta1})
  363. # 根据用户来进行定位
  364. class User_Location(ListView):
  365. def get(self,request):
  366. pass
  367. def post(self,request):
  368. current_user = request.session.get('username')
  369. current_user = MyUser.objects.get(username=current_user)
  370. try:
  371. user_pro = current_user.user_pro
  372. except:
  373. user_pro = ""
  374. try:
  375. user_city = current_user.user_city
  376. except:
  377. user_city = ""
  378. try:
  379. user_area = current_user.user_area
  380. except:
  381. user_area = ""
  382. data = {"user_pro":user_pro,"user_city":user_city,"user_area":user_area}
  383. data = json.dumps(data)
  384. return HttpResponse(data)
  385. # 地图定位请求接口:
  386. class Map_Scd_All(ListView):
  387. def get(self,request):
  388. pass
  389. def post(self,request):
  390. current_user = request.session.get('username')
  391. print("请求定位信息!!!")
  392. print("current_user:", current_user)
  393. current_user = MyUser.objects.get(username=current_user)
  394. print("请求杀虫灯定位!")
  395. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  396. print("---不是管理员")
  397. sta1 = RecentSCDdata.objects.filter(
  398. equip_id__equip_user=current_user).values()
  399. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  400. print("---代理商")
  401. sta1 = RecentSCDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values()
  402. else:
  403. print("---管理员")
  404. sta1 = RecentSCDdata.objects.all().values()
  405. nums = sta1.count()
  406. data = {"nums":nums}
  407. data = json.dumps(data)
  408. return HttpResponse(data)
  409. # 地图定位请求接口:
  410. class Map_Locat_View(ListView):
  411. def get(self, request):
  412. pass
  413. def post(self, request):
  414. current_user = request.session.get('username')
  415. print("请求定位信息!!!")
  416. print("current_user:", current_user)
  417. current_user = MyUser.objects.get(username=current_user)
  418. req = request.POST.get('req')
  419. print("req:", req)
  420. # page = int(request.POST.get('page'))
  421. # print("page",page)
  422. if req == "cbd":
  423. print("请求测报灯定位!")
  424. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  425. print("---不是管理员")
  426. sta1 = RecentCBDdata.objects.filter(equip_id__equip_user=current_user).values()
  427. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  428. print("---代理商")
  429. sta1 = RecentCBDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values()
  430. else:
  431. print("---管理员")
  432. sta1 = RecentCBDdata.objects.all().values()
  433. sta2 = []
  434. for x in sta1:
  435. try:
  436. sta2.append({
  437. "equip_id": x['equip_id_id'],
  438. "equip_type": 3,
  439. "equip_name": x['equip_name'],
  440. "gps": eval(x['cbd_data'])['gps'],
  441. "lng": eval(x['cbd_data'])['lng'],
  442. "lat": eval(x['cbd_data'])['lat']
  443. })
  444. except:
  445. sta2.append({
  446. "equip_id": x['equip_id_id'],
  447. "equip_type": 3,
  448. "equip_name": x['equip_name'],
  449. "gps": 2,
  450. "lng": eval(x['cbd_data'])['lng'],
  451. "lat": eval(x['cbd_data'])['lat']
  452. })
  453. # sta2 = [{
  454. # "equip_id": x['equip_id_id'],
  455. # "equip_type": 3,
  456. # "equip_name": x['equip_name'],
  457. # "lng": eval(x['cbd_data'])['lng'],
  458. # "lat": eval(x['cbd_data'])['lat']
  459. # } for x in sta1]
  460. data = json.dumps(sta2)
  461. # print("data:", data)
  462. return HttpResponse(data)
  463. elif req == "scd":
  464. print("请求杀虫灯定位!")
  465. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  466. print("---不是管理员")
  467. sta1 = RecentSCDdata.objects.filter(
  468. equip_id__equip_user=current_user).values()
  469. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  470. print("---代理商")
  471. sta1 = RecentSCDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values()
  472. else:
  473. print("---管理员")
  474. sta1 = RecentSCDdata.objects.all().values()
  475. sta2 = []
  476. a = datetime.datetime.now()
  477. for x in sta1:
  478. try:
  479. sta2.append({
  480. "equip_id": x['equip_id_id'],
  481. "equip_type": 2,
  482. "equip_name": x['equip_name'],
  483. "gps": eval(x['scd_data'])['gps'],
  484. "lng": eval(x['scd_data'])['lng'],
  485. "lat": eval(x['scd_data'])['lat']
  486. })
  487. except:
  488. sta2.append({
  489. "equip_id": x['equip_id_id'],
  490. "equip_type": 2,
  491. "equip_name": x['equip_name'],
  492. "gps": 2,
  493. "lng": 113,
  494. "lat": 34
  495. })
  496. print("消耗时间为",datetime.datetime.now()-a)
  497. data = json.dumps(sta2)
  498. # print("data:", data)
  499. return HttpResponse(data)
  500. elif req == "qxz":
  501. print("请求气象站定位!")
  502. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  503. print("---不是管理员")
  504. sta1 = QXZ_Base_Info.objects.filter(
  505. equip_id__equip_user=current_user)
  506. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  507. print("---代理商")
  508. sta1 = QXZ_Base_Info.objects.filter(equip_id__equip_agency=current_user.user_agency)
  509. else:
  510. print("---管理员")
  511. sta1 = QXZ_Base_Info.objects.all()
  512. sta2 = [{
  513. "equip_id": x.equip_id_id,
  514. "equip_type": 5,
  515. "equip_name": x.equip_id.equip_name,
  516. "lng": x.lng,
  517. "lat": x.lat
  518. } for x in sta1]
  519. data = json.dumps(sta2)
  520. # print("data:", data)
  521. return HttpResponse(data)
  522. elif req == "bzy":
  523. print("请求孢子仪定位!")
  524. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  525. print("---不是管理员")
  526. sta1 = BZYstatus.objects.filter(
  527. equip_id__equip_user=current_user)
  528. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  529. print("---代理商")
  530. sta1 = BZYstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  531. else:
  532. print("---管理员")
  533. sta1 = BZYstatus.objects.all()
  534. sta2 = [{
  535. "equip_id": x.equip_id_id,
  536. "equip_type": 7,
  537. "equip_name": x.equip_id.equip_name,
  538. "lng": eval(x.bzy_status)['lng'],
  539. "lat": eval(x.bzy_status)['lat']
  540. } for x in sta1]
  541. data = json.dumps(sta2)
  542. # print("data:", data)
  543. return HttpResponse(data)
  544. elif req == "xyq":
  545. print("请求性诱设备定位!")
  546. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  547. print("---不是管理员")
  548. sta1 = YBQstatus.objects.filter(
  549. equip_id__equip_user=current_user)
  550. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  551. print("---代理商")
  552. sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  553. else:
  554. print("---管理员")
  555. sta1 = YBQstatus.objects.all()
  556. sta2 = [{
  557. "equip_id": x.equip_id_id,
  558. "equip_type": 4,
  559. "equip_code": x.equip_code,
  560. "lng": eval(x.ybq_status)['lng'],
  561. "lat": eval(x.ybq_status)['lat']
  562. } for x in sta1]
  563. data = json.dumps(sta2)
  564. # print("data:", data)
  565. return HttpResponse(data)
  566. elif req == "imei":
  567. print("imei搜索定位!")
  568. equip_id = request.POST.get('equip_id')
  569. print("equip_id:", equip_id)
  570. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  571. # 非管理员筛选出当前用户:
  572. scd_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='2'))
  573. cbd_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='3'))
  574. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  575. # 代理商用户
  576. scd_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='2'))
  577. cbd_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='3'))
  578. else:
  579. # 管理员用户
  580. scd_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='2'))
  581. cbd_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='3'))
  582. if not scd_equips and not cbd_equips:
  583. sta5 = 0
  584. data = json.dumps(sta5)
  585. return HttpResponse(data)
  586. # print("scd_equips:", scd_equips)
  587. # print("cbd_equips:", cbd_equips)
  588. else:
  589. sta2 = []
  590. if scd_equips:
  591. for i in scd_equips:
  592. sta1 = SCDstatus.objects.filter(
  593. equip_id__equip_id__contains=equip_id)
  594. for x in sta1:
  595. try:
  596. sta2.append({
  597. "equip_id": x.equip_id.equip_id,
  598. "equip_type": x.equip_id.equip_type.type_id,
  599. "equip_name": x.equip_id.equip_name,
  600. "gps": eval(x.scd_status)['gps'],
  601. "lng": x.lng,
  602. "lat": x.lat,
  603. "equip_location": x.equip_location
  604. })
  605. except:
  606. sta2.append({
  607. "equip_id": x.equip_id.equip_id,
  608. "equip_type": x.equip_id.equip_type.type_id,
  609. "equip_name": x.equip_id.equip_name,
  610. "gps": 2,
  611. "lng": x.lng,
  612. "lat": x.lat,
  613. "equip_location": x.equip_location
  614. })
  615. if cbd_equips:
  616. for i in cbd_equips:
  617. sta3 = CBDstatus.objects.filter(
  618. equip_id__equip_id__contains=equip_id)
  619. sta4 = []
  620. for x in sta3:
  621. try:
  622. sta4.append({
  623. "equip_id": x.equip_id.equip_id,
  624. "equip_type": 3,
  625. "equip_name": x.equip_id.equip_name,
  626. "gps": eval(x.cbd_status)['gps'],
  627. "lng": x.lng,
  628. "lat": x.lat,
  629. "equip_location": x.equip_location
  630. })
  631. except:
  632. sta4.append({
  633. "equip_id": x.equip_id.equip_id,
  634. "equip_type": 3,
  635. "equip_name": x.equip_id.equip_name,
  636. "gps": 2,
  637. "lng": x.lng,
  638. "lat": x.lat,
  639. "equip_location": x.equip_location
  640. })
  641. # sta4 = [{
  642. # "equip_id": x.equip_id.equip_id,
  643. # "equip_type": x.equip_id.equip_type.type_id,
  644. # "equip_name": x.equip_id.equip_name,
  645. # "lng": x.lng,
  646. # "lat": x.lat,
  647. # "equip_location": x.equip_location
  648. # } for x in sta3]
  649. if scd_equips and cbd_equips:
  650. sta5 = sta2+sta4
  651. elif scd_equips and not cbd_equips:
  652. sta5 = sta2
  653. elif not scd_equips and cbd_equips:
  654. sta5 = sta4
  655. data = json.dumps(sta5)
  656. return HttpResponse(data)
  657. # 个人信息 视图函数
  658. class Personal_Info_View(View):
  659. def get(self, request):
  660. user_name = request.user.username
  661. user = MyUser.objects.get(username=user_name)
  662. if user.is_superuser:
  663. role = "superuser"
  664. elif user.is_staff:
  665. role = "staff"
  666. elif user.is_agency:
  667. role = "agency"
  668. else:
  669. role = "user"
  670. User_Log.objects.create(log_user=request.user.username,
  671. log_ip=request.META['REMOTE_ADDR'], log_desc='个人信息')
  672. return render(request, 'home/personal_info.html', context={'user': user, 'role': role})
  673. def post(self, request):
  674. username = request.user.username
  675. print('username:',username)
  676. user = MyUser.objects.get(username=username)
  677. req = request.POST.get('req')
  678. if req == "info":
  679. user.user_phone = request.POST.get('phone')
  680. user.user_pro = request.POST.get('province')
  681. user.user_city = request.POST.get('city')
  682. user.user_area = request.POST.get('area')
  683. print("phone:", request.POST.get('phone'))
  684. print("province:", request.POST.get('province'))
  685. print("city:", request.POST.get('city'))
  686. print("area:", request.POST.get('area'))
  687. try:
  688. user.save()
  689. User_Log.objects.create(log_user=request.user.username,
  690. log_ip=request.META['REMOTE_ADDR'], log_desc='修改个人信息')
  691. data = "0"
  692. return HttpResponse(data)
  693. except:
  694. data = "1"
  695. return HttpResponse(data)
  696. # 修改头像:
  697. elif req == "photo":
  698. user_photo = request.FILES['upicture']
  699. print("用户头像:", user_photo)
  700. user_photo_dir = 'user_photo/'
  701. # 判断如果路径不存在,即创建路径
  702. if os.path.exists(user_photo_dir) == False:
  703. os.makedirs(user_photo_dir)
  704. img = Image.open(user_photo)
  705. img.save(user_photo_dir + username+".png")
  706. new_photo = user_photo_dir + username+".png"
  707. # 数据库关联设备,并在照片的表中存入路径:
  708. user.user_picture = new_photo
  709. user.save()
  710. data = "0"
  711. return HttpResponse(data)
  712. # 修改密码 视图函数
  713. def change_pwd(request):
  714. if request.method == 'GET':
  715. user_name = request.user.username
  716. print("当前用户为:", user_name)
  717. return render(request, 'home/change_pwd.html')
  718. if request.method == 'POST':
  719. user_name = request.POST.get('username')
  720. print('user_name:',user_name)
  721. user = MyUser.objects.get(username=user_name)
  722. print("当前用户为:", user_name)
  723. oldpassword = request.POST.get('oldpassword')
  724. password = request.POST.get('password')
  725. print("post的oldpassword:", oldpassword)
  726. print("post的password:", password)
  727. if(check_password(oldpassword, user.password)):
  728. user.set_password(password)
  729. user.save()
  730. User_Log.objects.create(log_user=request.user.username,
  731. log_ip=request.META['REMOTE_ADDR'], log_desc='修改密码')
  732. data = "0"
  733. return HttpResponse(data)
  734. else:
  735. data = "1"
  736. return HttpResponse(data)
  737. # 用户退出
  738. @login_required
  739. def logout(request):
  740. print("用户退出")
  741. del request.session['username']# 删除session
  742. auth.logout(request)
  743. return redirect('/login')
  744. # 用户账户有效期
  745. class User_Remaining_Days(View):
  746. def get(self, request):
  747. current_user = request.session.get('username')
  748. print("current_user:", current_user)
  749. current_user = MyUser.objects.get(username=current_user)
  750. if current_user.is_superuser == True:
  751. pass
  752. else:
  753. # remaining_days为账号还剩xx天,user_date为xxxx年xx月xx日到期
  754. remaining_days = (current_user.expire_date - datetime.datetime.now()).days
  755. user_date = current_user.expire_date
  756. user_date = datetime.date.strftime(user_date,"%Y-%m-%d %H:%M:%S")[0:10]
  757. # data = {"remaining_days":remaining_days, "user_date":user_date}
  758. # data = json.dumps(data)
  759. return render(request, 'home/renew.html', context={'remaining_days': remaining_days, 'user_date': user_date})
  760. # 主页提示设备流量卡过期
  761. class SCD_Alarm(ListView):
  762. def get(self,request):
  763. pass
  764. def post(self,request):
  765. current_user = request.session.get('username')
  766. current_user = MyUser.objects.get(username=current_user)
  767. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  768. print("---用户")
  769. _list = Equip.objects.filter(equip_user=current_user,equip_type=2).values()
  770. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  771. print("---代理商")
  772. _list = Equip.objects.filter(equip_agency=current_user.user_agency,equip_type=2).values()
  773. dat = []
  774. data = []
  775. for i in _list:
  776. dat.append(i['equip_id'])
  777. for x in Alarm_record.objects.filter(alarm_desc__contains="Dump").values():
  778. if x['equip_id_id'] in dat:
  779. data.append({"equip_id":x['equip_id_id'],"time":x['alarm_time']})
  780. data = json.dumps(data, cls=CJSONEncoder)
  781. return HttpResponse(data)
  782. class Big_Data(ListView):
  783. def get(self,request):
  784. current_user = request.session.get('username')
  785. current_user = MyUser.objects.get(username=current_user)
  786. return render(request, 'home/bigScreen.html', context={"current_user":current_user})
  787. def post(self, request):
  788. pass
  789. # 主页提示设备流量卡过期
  790. class Equip_Sim(ListView):
  791. def get(self,request):
  792. pass
  793. def post(self,request):
  794. current_user = request.session.get('username')
  795. current_user = MyUser.objects.get(username=current_user)
  796. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  797. print("---用户")
  798. simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user)
  799. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  800. print("---代理商")
  801. simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency)
  802. else:
  803. print("---管理员")
  804. simlist = Equip_SimInfo.objects.all()
  805. dat = []
  806. for i in simlist:
  807. dat.append({"equip_id":i.equip_id_id,"expiry_date":i.expiry_date})
  808. data = dat
  809. data = json.dumps(data)
  810. return HttpResponse(data)
  811. # 展示页面判断是不是四情用户
  812. class User_Judge(ListView):
  813. def get(self,request):
  814. pass
  815. def post(self,request):
  816. user_name = request.POST.get('username')
  817. pass_word = request.POST.get('password')
  818. print('输入的用户名:', user_name)
  819. user = MyUser.objects.extra(
  820. where=['binary username=%s'], params=[user_name])
  821. print("user.exists():", user.exists())
  822. if user.exists() == False:
  823. data = "1"
  824. return HttpResponse(data)
  825. else:
  826. user = MyUser.objects.get(username=user_name)
  827. if user.is_active != True:
  828. data = "2"
  829. return HttpResponse(data)
  830. else:
  831. if check_password(pass_word, user.password) != True:
  832. data = "3"
  833. return HttpResponse(data)
  834. else:
  835. print('登陆成功')
  836. user_obj = MyUser.objects.get(username=user_name)
  837. equip_list = Equip.objects.filter(equip_user=user_obj)
  838. type_list = []
  839. for i in equip_list:
  840. type_list.append(i.equip_type_id)
  841. if user_obj.is_superuser:
  842. auth_user = authenticate(
  843. username=user_name, password=pass_word)
  844. auth_login(request, auth_user)
  845. # 将当前登录的用户名写入session
  846. request.session['username'] = user_name
  847. data = "0"
  848. return HttpResponse(data)
  849. elif 3 and 5 and 6 and 7 in type_list:
  850. auth_user = authenticate(
  851. username=user_name, password=pass_word)
  852. auth_login(request, auth_user)
  853. # 将当前登录的用户名写入session
  854. request.session['username'] = user_name
  855. data = "0"
  856. else:
  857. data = "5"
  858. return HttpResponse(data)
  859. # 用户基地展示图
  860. class User_Display(ListView):
  861. def get(self,request):
  862. pass
  863. def post(self,request):
  864. current_user = request.session.get('username')
  865. print('current_user')
  866. print(current_user)
  867. current_user = MyUser.objects.get(username=current_user)
  868. equip_list = Equip.objects.filter(equip_user=current_user)
  869. if current_user.is_superuser:
  870. equip_list = Equip.objects.all()
  871. dat = []
  872. for i in equip_list:
  873. if i.equip_type_id == 3:
  874. dat.append({"e_id":i.equip_id,"equip_type":"3"})
  875. elif i.equip_type_id == 5:
  876. dat.append({"e_id":i.equip_id,"equip_type":"5"})
  877. elif i.equip_type_id == 6:
  878. dat.append({"e_id":i.equip_id,"equip_type":"6"})
  879. elif i.equip_type_id == 7:
  880. dat.append({"e_id":i.equip_id,"equip_type":"7"})
  881. data = {"basename":current_user.base_name,"basephoto":"%s"%current_user.base_show,"dat":dat}
  882. data = json.dumps(data)
  883. return HttpResponse(data)
  884. # 测报灯数据展示页面
  885. class CBD_Display(ListView):
  886. def get(self,request):
  887. pass
  888. def post(self,request):
  889. e_id = request.POST.get("imei")
  890. cbd_obj = CBDstatus.objects.get(equip_id=e_id)
  891. cbd_photo = CBDphoto.objects.filter(equip_id=e_id)
  892. photo_list = []
  893. for x in cbd_photo:
  894. photo_list.append(x.addr)
  895. if len(photo_list) >= 10:
  896. break
  897. pest_list = []
  898. for i in CBDphoto.objects.filter(equip_id=e_id):
  899. if i.indentify_result:
  900. pest_list.append({"pest":i.indentify_result,"time":i.upl_time,"at":i.at,"ah":i.ah})
  901. if len(pest_list) >= 10:
  902. break
  903. data = {"photolist":photo_list,"pestlist":pest_list,"status":cbd_obj.cbd_status,"is_online":cbd_obj.is_online}
  904. data = json.dumps(data, cls=CJSONEncoder)
  905. return HttpResponse(data)
  906. # 孢子仪数据展示页面
  907. class BZY_Display(ListView):
  908. def get(self,request):
  909. pass
  910. def post(self,request):
  911. e_id = request.POST.get("imei")
  912. bzy_obj = BZYstatus.objects.get(equip_id=e_id)
  913. bzy_photo = BZYphoto.objects.filter(equip_id=e_id)
  914. photo_list = []
  915. for x in bzy_photo:
  916. photo_list.append(x.addr)
  917. if len(photo_list) >= 10:
  918. break
  919. data = {"photolist":photo_list,"status":bzy_obj.bzy_status,"is_online":bzy_obj.is_online}
  920. data = json.dumps(data, cls=CJSONEncoder)
  921. return HttpResponse(data)
  922. # 气象站数据展示页面
  923. class QXZ_Display(ListView):
  924. def get(self,request):
  925. pass
  926. def post(self,request):
  927. e_id = request.POST.get("imei")
  928. qxz_dict_3 = copy.deepcopy(qxz_dict)
  929. sta1 = QXZdata.objects.filter(equip_id=e_id).values()
  930. dat = []
  931. for x in sta1:
  932. sta = {"upl_time": x["upl_time"], "unit": [], "equip_id": x["equip_id_id"]}
  933. for i in eval(x["qxz_data"])["data"]:
  934. qxz_dict_3[i["eNum"]][0] = i["eValue"]
  935. d = copy.deepcopy(qxz_dict_3[i["eNum"]]) # 此处有坑 如果不深拷贝 后一次 qxz_dict[i["eNum"]][0] = i["eValue"] 赋值会把上次赋值替换掉
  936. ek = i["eKey"]
  937. d.append(ek)
  938. d.append(i["eNum"])
  939. sta["unit"].append(d)
  940. # qxz_dict[eval(x.qxz_data)['data'][0]["eNum"]]
  941. dat.append(sta)
  942. if len(dat) >= 10:
  943. break
  944. data = {"dat": dat}
  945. data = json.dumps(data, cls=CJSONEncoder)
  946. return HttpResponse(data)
  947. # 展示页面地图
  948. class Display_Map(ListView):
  949. def get(self,request):
  950. e_type = request.GET.get("type")
  951. return render(request, 'home/bigScreenMap.html', context={"type":e_type})
  952. def post(self,request):
  953. current_user = request.session.get('username')
  954. e_type = request.POST.get("type")
  955. print('current_user')
  956. print(current_user)
  957. current_user = MyUser.objects.get(username=current_user)
  958. equip_list = Equip.objects.filter(equip_user=current_user)
  959. if current_user.is_superuser:
  960. equip_list = Equip.objects.all()
  961. dat = []
  962. if e_type == "all":
  963. for i in equip_list:
  964. if i.equip_type_id == 3:
  965. lat = CBDstatus.objects.get(equip_id=i).lat
  966. lng = CBDstatus.objects.get(equip_id=i).lng
  967. # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng})
  968. dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"3"})
  969. elif i.equip_type_id == 5:
  970. lat = ""
  971. lng = ""
  972. # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng})
  973. dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"5"})
  974. elif i.equip_type_id == 6:
  975. lat = ""
  976. lng = ""
  977. # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng})
  978. dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"6"})
  979. elif i.equip_type_id == 7:
  980. try:
  981. lat = eval(BZYstatus.objects.get(equip_id=i).bzy_status)["lat"]
  982. lng = eval(BZYstatus.objects.get(equip_id=i).bzy_status)["lng"]
  983. except Exception as e:
  984. print("错误信息为:",e)
  985. lat = ""
  986. lng = ""
  987. # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng})
  988. dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"7"})
  989. elif e_type == "3":
  990. for i in equip_list:
  991. if i.equip_type_id == 3:
  992. lat = CBDstatus.objects.get(equip_id=i).lat
  993. lng = CBDstatus.objects.get(equip_id=i).lng
  994. # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng})
  995. dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"3"})
  996. elif e_type == "7":
  997. for i in equip_list:
  998. if i.equip_type_id == 7:
  999. try:
  1000. lat = eval(BZYstatus.objects.get(equip_id=i).bzy_status)["lat"]
  1001. lng = eval(BZYstatus.objects.get(equip_id=i).bzy_status)["lng"]
  1002. except Exception as e:
  1003. print("错误信息为:",e)
  1004. lat = ""
  1005. lng = ""
  1006. # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng})
  1007. dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"7"})
  1008. data = {"dat":dat}
  1009. data = json.dumps(data)
  1010. return HttpResponse(data)
  1011. # 用户基地展示
  1012. class User_Base(ListView):
  1013. def get(self,request):
  1014. current_user = request.session.get('username')
  1015. current_user = MyUser.objects.get(username=current_user)
  1016. base_name = current_user.base_name
  1017. base_show = current_user.base_show
  1018. return render(request, 'home/baseEdit.html', context={"base_name":base_name,"base_photo":base_show})
  1019. def post(self,request):
  1020. pass
  1021. # 用户基地保存
  1022. class User_Base_Save(ListView):
  1023. def get(self,request):
  1024. pass
  1025. def post(self,request):
  1026. basestr = request.FILES.get("basephoto")
  1027. basename = request.POST.get("basename")
  1028. current_user = request.session.get('username')
  1029. current_user = MyUser.objects.get(username=current_user)
  1030. base_dir = "base_show/"
  1031. if basestr:
  1032. img = Image.open(basestr)
  1033. img.save(base_dir + current_user.username +".png")
  1034. current_user.base_show = base_dir + current_user.username +".png"
  1035. current_user.base_name = basename
  1036. current_user.save()
  1037. return HttpResponse("0")
  1038. class VR_List(ListView):
  1039. def get(self, request):
  1040. current_user = request.session.get('username')
  1041. current_user = MyUser.objects.get(username=current_user)
  1042. if current_user.is_superuser:
  1043. role = "superuser"
  1044. elif current_user.is_staff:
  1045. role = "staff"
  1046. elif current_user.is_agency:
  1047. role = "agency"
  1048. else:
  1049. role = "user"
  1050. user_list = MyUser.objects.all()
  1051. user_name = []
  1052. for i in user_list:
  1053. user_name.append(i.username)
  1054. return render(request, 'vr/panoramaList.html', context={"role":role,"user_name":user_name})
  1055. def post(self, request):
  1056. pass
  1057. class VR_Display(ListView):
  1058. def get(self, request):
  1059. e_id = request.GET.get('id')
  1060. img = VR_Photo.objects.get(id=e_id).photo
  1061. return render(request, 'vr/panorama.html', context={"img":img})
  1062. def post(self, request):
  1063. pass
  1064. class Home_VR(ListView):
  1065. def get(self,request):
  1066. current_user = request.session.get('username')
  1067. current_user = MyUser.objects.get(username=current_user)
  1068. vr_obj = VR_Photo.objects.filter(user=current_user)
  1069. if current_user.is_superuser or current_user.is_staff:
  1070. vr_obj = VR_Photo.objects.all()
  1071. data = []
  1072. for i in vr_obj:
  1073. data.append({"id":i.id,"name":i.name,"user":i.user.username,"photo":i.photo})
  1074. data = json.dumps(data)
  1075. return HttpResponse(data)
  1076. def post(self,request):
  1077. pass
  1078. # VR图片上传
  1079. class VR_Upload(ListView):
  1080. def get(self,request):
  1081. pass
  1082. def post(self,request):
  1083. e_id = request.POST.get('id')
  1084. current_user = request.session.get('username')
  1085. current_user = MyUser.objects.get(username=current_user)
  1086. name = request.POST.get('name')
  1087. uname = request.POST.get('uname')
  1088. vruser = MyUser.objects.get(username=uname)
  1089. # vr_display = request.FILES['display']
  1090. vr_photo = request.FILES['photo']
  1091. print("vr图片:", vr_photo)
  1092. vr_photo_dir = 'vr_photo/'
  1093. now_time = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
  1094. # new_display = vr_photo_dir + current_user.username + "dis" + now_time +".png"
  1095. new_photo = vr_photo_dir + current_user.username + "pho" + now_time +".png"
  1096. if os.path.exists(vr_photo_dir) == False:
  1097. os.makedirs(vr_photo_dir)
  1098. # img1 = Image.open(vr_display)
  1099. # img1.save(new_display)
  1100. img2 = Image.open(vr_photo)
  1101. img2.save(new_photo)
  1102. else:
  1103. # img1 = Image.open(vr_display)
  1104. # img1.save(new_display)
  1105. img2 = Image.open(vr_photo)
  1106. img2.save(new_photo)
  1107. # 判断如果路径不存在,即创建路径
  1108. if e_id:
  1109. vr_obj = VR_Photo.objects.get(id=e_id)
  1110. # 数据库关联设备,并在照片的表中存入路径:
  1111. vr_obj.name = name
  1112. vr_obj.user = vruser
  1113. # vr_obj.display = new_display
  1114. vr_obj.photo = new_photo
  1115. vr_obj.save()
  1116. data = "0"
  1117. else:
  1118. print("new_photo:",new_photo)
  1119. VR_Photo.objects.create(user=vruser,name=name,photo=new_photo)
  1120. data = "0"
  1121. return HttpResponse(data)
  1122. # vr图片删除
  1123. class VR_Delete(ListView):
  1124. def get(self,request):
  1125. pass
  1126. def post(self,request):
  1127. print("-----vr image delete!-----")
  1128. e_id = request.POST.get('id')
  1129. photo_obj = VR_Photo.objects.get(id=e_id)
  1130. if os.path.exists(photo_obj.photo) == True:
  1131. # 删除图片文件
  1132. # os.remove(photo_obj.display)
  1133. os.remove(photo_obj.photo)
  1134. # 删除数据库照片列表中,照片路径:
  1135. try:
  1136. VR_Photo.objects.filter(id=e_id).delete()
  1137. print("-----image delete ok!-----")
  1138. data = "1"
  1139. return HttpResponse(data)
  1140. except:
  1141. print("-----image delete failed!-----")
  1142. data = "0"
  1143. return HttpResponse(data)
  1144. else:
  1145. # 照片不存在,但是数据库有路径的情况会删除不掉
  1146. # 因此不管何时都删除数据库路径
  1147. try:
  1148. VR_Photo.objects.filter(id=e_id).delete()
  1149. print("-----image delete ok!-----")
  1150. except:
  1151. print("-----image not exist!-----")
  1152. pass
  1153. data = "1"
  1154. return HttpResponse(data)
  1155. # APP轮播图
  1156. class App_Img(ListView):
  1157. def get(self,request):
  1158. current_user = request.session.get('username')
  1159. current_user = MyUser.objects.get(username=current_user)
  1160. app_img = APP_Img.objects.filter(user=current_user)
  1161. return render(request, 'home/appBannerManage.html', context={"app_img":app_img})
  1162. def post(self,request):
  1163. pass
  1164. # APP轮播图上传
  1165. class App_Img_Upload(ListView):
  1166. def get(self,request):
  1167. pass
  1168. def post(self,request):
  1169. current_user = request.session.get('username')
  1170. current_user = MyUser.objects.get(username=current_user)
  1171. # vr_display = request.FILES['display']
  1172. img = request.FILES['photo']
  1173. print("vr图片:", img)
  1174. vr_photo_dir = 'app_file/app_img/'
  1175. now_time = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
  1176. # new_display = vr_photo_dir + current_user.username + "dis" + now_time +".png"
  1177. new_photo = vr_photo_dir + current_user.username + now_time +".png"
  1178. if os.path.exists(vr_photo_dir) == False:
  1179. os.makedirs(vr_photo_dir)
  1180. # img1 = Image.open(vr_display)
  1181. # img1.save(new_display)
  1182. img2 = Image.open(img)
  1183. img2.save(new_photo)
  1184. else:
  1185. # img1 = Image.open(vr_display)
  1186. # img1.save(new_display)
  1187. img2 = Image.open(img)
  1188. img2.save(new_photo)
  1189. APP_Img.objects.create(user=current_user,img=new_photo)
  1190. data = "0"
  1191. return HttpResponse(data)
  1192. # app轮播图删除
  1193. class App_Img_Delete(ListView):
  1194. def get(self,request):
  1195. pass
  1196. def post(self,request):
  1197. print("-----app image delete!-----")
  1198. e_id = request.POST.get('id')
  1199. photo_obj = APP_Img.objects.get(id=e_id)
  1200. if os.path.exists(photo_obj.img) == True:
  1201. # 删除图片文件
  1202. # os.remove(photo_obj.display)
  1203. os.remove(photo_obj.img)
  1204. # 删除数据库照片列表中,照片路径:
  1205. try:
  1206. APP_Img.objects.filter(id=e_id).delete()
  1207. print("-----image delete ok!-----")
  1208. data = "1"
  1209. return HttpResponse(data)
  1210. except:
  1211. print("-----image delete failed!-----")
  1212. data = "0"
  1213. return HttpResponse(data)
  1214. else:
  1215. # 照片不存在,但是数据库有路径的情况会删除不掉
  1216. # 因此不管何时都删除数据库路径
  1217. try:
  1218. APP_Img.objects.filter(id=e_id).delete()
  1219. print("-----image delete ok!-----")
  1220. except:
  1221. print("-----image not exist!-----")
  1222. pass
  1223. data = "1"
  1224. return HttpResponse(data)