# -*- coding: utf-8 -*- from django.shortcuts import render, redirect from apps.SystemManage.forms import AddUserForm from django.http import HttpResponse from django.template import RequestContext from django.contrib import auth from django.contrib.auth import authenticate, login as auth_login, logout from django.contrib.auth import get_user_model from django.contrib.auth.models import User, Group, Permission from django.contrib.auth.hashers import make_password, check_password from django.contrib.auth.decorators import login_required from django.views.decorators.csrf import csrf_exempt from django.views.generic import ListView from django.views.generic.base import View import datetime from PIL import Image import json import base64 import redis from django.core.cache import cache # from xadmin.models import Log from apps.AppInfoManage.models import Help, MyUser, User_Group, User_Log, Equip, Equip_type, CBDdata, CBDstatus, SCDstatus, Logo, RecentCBDdata, RecentSCDdata, Equip_SimInfo,\ BZYstatus, CBDphoto, BZYphoto, QXZdata, QXZstatus, VR_Photo, APP_Img, YBQstatus, Purchase, QXZ_Base_Info, Alarm_record from .forms import LoginForm, ChangePwdForm, UserRegisterForm from apps.EquipManage.views import CJSONEncoder from apps.ReportManage.all_dict import qxz_dict, insect_dict, insect_dict_new import copy import os from yfwlw_pro.settings import get_client_ip # cach = redis.StrictRedis('127.0.0.1',6379) # cach.set("k1","v1",nx=False) # kv1 = cach.get("k1") # print("kv1:",kv1) #from django.core.exceptions import ObjectDoesNotExist #from django.utils.datastructures import MultiValueDictKeyError # from django.conf import settings # def global_setting(request):#注意有request参数 # CURRENTUSER = settings.CURRENTUSER # print("全局变量:!") # print("CURRENTUSER:",CURRENTUSER) # return locals() from django.views.decorators.csrf import csrf_exempt from django.utils.decorators import method_decorator # 用户登录 @method_decorator(csrf_exempt, name='dispatch') class Login_View(View): def get(self, request): HTTP_HOST=request.META['HTTP_HOST'] print('HTTP_HOST:',HTTP_HOST) # form = AddUserForm() # return render(request, 'home/login.html', context={'form': form}) if request.user.is_authenticated(): user_name = request.user.username print('user_name=', user_name) current_user = MyUser.objects.get(username=user_name) if current_user.is_superuser: role = "superuser" elif current_user.is_staff: role = "staff" elif current_user.is_agency: role = "agency" else: role = "user" num = 1 if current_user.is_superuser: role = "superuser" elif current_user.is_staff: role = "staff" elif current_user.is_agency: role = "agency" if Purchase.objects.filter(userid=current_user).exists(): pass else: print(current_user.user_agency) if current_user.user_agency: purchase_list = Purchase.objects.filter(userid__user_agency=current_user.user_agency).count() if purchase_list: pass else: num = 0 else: num = 0 else: role = "user" num = Purchase.objects.filter(userid=current_user).count() # 获取用户所有组: groups = Group.objects.filter(user=current_user) print("groups:", groups) for i in groups: print("##############:",i.name) print("当前用户类型:是否为超级管理员", current_user.is_superuser) # 获取用户的logo组 logos = Logo.objects.filter(myuser=current_user) print("logos:",logos) for i in groups: print("##############:",i.name) print("当前用户类型:是否为超级管理员", current_user.is_superuser) print("---------len:",len(logos)) if len(logos) == "0": logos == "" else: pass # 超级管理员没有到期时间 提取不到参数时会报错 try: # remaining_days=账户还剩多少天 remaining_days = (current_user.expire_date - datetime.datetime.now()).days # 账户的具体到期时间 user_date = current_user.expire_date # 将账户的具体到期时间转字符串,取年-月-日 user_date = datetime.date.strftime(user_date,"%Y-%m-%d %H:%M:%S")[0:10] except: return render(request, 'home/home.html', context={'user_name': user_name, 'current_user': current_user, 'role': role, 'groups': groups, 'logos':logos,'have':num}) return render(request, 'home/home.html', context={'user_name': user_name, 'current_user': current_user, 'role': role, 'groups': groups, 'remaining_days':remaining_days, 'user_date':user_date, 'logos':logos,'have':num}) # return render(request, 'home/home.html', context={'user_name': user_name, 'role': role, 'groups': groups}) else: form = AddUserForm() # # 读取cookie: # try: # user_name = request.COOKIES.get('uname') # # 从cookie中读出的upwd p1为str: # p1 = request.COOKIES.get('upwd') # # print("type(p1):", type(p1)) # # 将str类型的p1转为bytes:p2 # p2 = bytes(p1, encoding='utf-8') # # 将p2解密,得到bytes的p3: # p3 = base64.decodestring(p2) # # 将p3转为str: # p4 = str(p3, encoding="utf8") # pass_word = p4 # print("读取cookie:用户名:", user_name) # print("读取cookie:用户密码:", pass_word) # except: # user_name = pass_word = None if HTTP_HOST == "www.yfzhwlw.com" or HTTP_HOST == "yfzhwlw.com" or HTTP_HOST == "120.27.222.26": return render(request, 'home/login.html', context={'form': form}) # return render(request, 'home/common_login.html', context={'form': form}) elif HTTP_HOST == "www.zgzhwlw.com" or HTTP_HOST == "zgzhwlw.com": return render(request, 'home/common_login.html', context={'form': form}) elif HTTP_HOST == "127.0.0.1:8000": return render(request, 'home/login.html', context={'form': form}) # return render(request, 'home/common_login.html', context={'form': form}) elif HTTP_HOST == "localhost:8000": # return render(request, 'home/common_login.html', context={'form': form}) return render(request, 'home/common_login.html', context={'form': form}) else: return render(request, 'home/login.html', context={'form': form}) # return render(request, 'home/common_login.html', context={'form': form}) def post(self, request): user_name = request.POST.get('username') pass_word = request.POST.get('password') print('输入的用户名:', user_name) user = MyUser.objects.extra( where=['binary username=%s'], params=[user_name]) print("user.exists():", user.exists()) if user.exists() == False: data = "1" return HttpResponse(data) else: user = MyUser.objects.get(username=user_name) if user.is_active != True: data = "2" return HttpResponse(data) else: if check_password(pass_word, user.password) != True: data = "3" return HttpResponse(data) else: print('登陆成功') try: current_user = MyUser.objects.get(username=user_name) remaining_days = (current_user.expire_date - datetime.datetime.now()).days print("账号剩余天数:",remaining_days) if remaining_days < 30 and remaining_days > 0: print("账号剩余时间过少,请及时充值") elif remaining_days <= 0: return HttpResponse("4") except Exception as e: pass user_has_perm = user.has_perm('apps.EquipList.add_equip') print('user_has_perm=', user_has_perm) print("头像:", user.user_picture) auth_user = authenticate( username=user_name, password=pass_word) auth_login(request, auth_user) # 将当前登录的用户名写入session request.session['username'] = user_name if user.is_superuser: role = "superuser" elif user.is_staff: role = "staff" elif user.is_agency: role = "agency" else: role = "user" # 记录用户操作记录: User_Log.objects.create( log_user=request.user.username, log_ip=get_client_ip(request), log_desc='登录') data = "0" returnUrl = request.POST.get('returnUrl') print("returnUrl:",returnUrl) if returnUrl == None: print("returnUrl is none!!!!!!!!") return HttpResponse(data) else: if returnUrl == "": print("returnUrl is empty") return render(request, 'reportmanage/cbd_report.html') elif returnUrl != "": print("returnUrl is not empty") return render(request, 'reportmanage/cbd_report.html') # response = HttpResponse(data) # response['Access-Control-Allow-Origin'] = '*' # response['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS' # response['Access-Control-Max-Age'] = '1000' # response['Access-Control-Allow-Headers'] = '*' # return response # return HttpResponse(data) # if is_remember_pwd == "remember": # print("记住密码") # data = "0" # re = HttpResponse(data) # re.set_cookie('uname', user_name, 3600) # # 保存密码:先加密 # bpwd = base64.encodestring( # bytes(pass_word, encoding='utf-8')) # re.set_cookie('upwd', bpwd, 3600) # return re # elif is_remember_pwd == "no": # print("不记住密码,删除密码") # data = "0" # re = HttpResponse(data) # re.delete_cookie("uname") # re.delete_cookie("upwd") # return re # 首页视图函数 from django.core import serializers def home(request): if request.user.is_authenticated(): user_name = request.user.username current_user = MyUser.objects.get(username=user_name) print('user_name=', user_name) print('current_user=', current_user.username) groups = User_Group.objects.filter(user=current_user) print("groups:", groups) # 获取用户的logo组 logos = Logo.objects.filter(myuser=current_user) print("logos:",logos) for i in groups: print("##############:",i.name) print("当前用户类型:是否为超级管理员", current_user.is_superuser) print("---------len:",len(logos)) if len(logos) == "0": logos == "" else: pass # groups_list=[] # for i in groups: # groups_list.append(i.name) # groups_list = ','.join(groups_list) # print("groups_list:", groups_list) # 如果是依科曼的用户: # if "scd" in groups_list: # if "cbd" in groups_list: # #杀虫灯和测报灯用户: # group = "scd+cbd" # else: # # 杀虫灯用户: # group = "scd" # elif "cbd" in groups_list: # # 测报灯用户: # group = "cbd" # elif "ykm" in groups_list: # if "ykm" in groups_list: # # 依科曼测报灯用户: # group = "ykm" # else: # group = "yfkj" print("当前用户类型:是否为超级管理员", current_user.is_superuser) if current_user.is_superuser: role = "superuser" num = 1 elif current_user.is_staff: role = "staff" num = 1 elif current_user.is_agency: role = "agency" if Purchase.objects.filter(userid=current_user).exists(): num = 1 else: print(current_user.user_agency) if current_user.user_agency: hh = Purchase.objects.filter(userid__user_agency=current_user.user_agency).count() if hh: num = 1 else: num = 0 else: num = 0 else: role = "user" num = Purchase.objects.filter(userid=current_user).count() print("num",num) current_user = MyUser.objects.get(username=user_name) # 超级管理员没有到期时间 提取不到参数时会报错 try: # remaining_days=账户还剩多少天 remaining_days = (current_user.expire_date - datetime.datetime.now()).days # 账户的具体到期时间 user_date = current_user.expire_date # 将账户的具体到期时间转字符串,取年-月-日 user_date = datetime.date.strftime(user_date,"%Y-%m-%d %H:%M:%S")[0:10] except: return render(request, 'home/home.html', context={'current_user': current_user, 'role': role, 'groups': groups, 'logos':logos,'have':num}) return render(request, 'home/home.html', context={'current_user': current_user, 'role': role, 'groups': groups, 'remaining_days':remaining_days, 'user_date':user_date, 'logos':logos,'have':num}) else: return redirect('/login') # 用户注册 from django.utils.decorators import method_decorator @method_decorator(csrf_exempt, name='dispatch') class Register_View(View): def post(self, request): user_name = request.POST.get('username') email = request.POST.get('email') user_phone = request.POST.get('user_phone') password = request.POST.get('password') password2 = request.POST.get('password2') print(user_name) print(email) print(user_phone) print(password) print(password2) if(MyUser.objects.extra(where=['binary username=%s'], params=[user_name]).exists() == True): data = "1" return HttpResponse(data) UserModel = get_user_model() user = UserModel.objects.create_user( username=user_name, email=email, password=password, user_phone=user_phone) user.save() data = "0" return HttpResponse(data) @login_required def home_map(request): User_Log.objects.create(log_user=request.user.username, log_ip=get_client_ip(request), log_desc='首页') current_user = request.session.get('username') print("请求定位信息!!!") print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) print("请求杀虫灯定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = SCDstatus.objects.filter( equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = SCDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta1 = SCDstatus.objects.all() return render(request, 'home/home_map.html', context={"scdlist":sta1}) # 根据用户来进行定位 class User_Location(ListView): def get(self,request): pass def post(self,request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) try: user_pro = current_user.user_pro except: user_pro = "" try: user_city = current_user.user_city except: user_city = "" try: user_area = current_user.user_area except: user_area = "" data = {"user_pro":user_pro,"user_city":user_city,"user_area":user_area} data = json.dumps(data) return HttpResponse(data) # 地图定位请求接口: class Map_Scd_All(ListView): def get(self,request): pass def post(self,request): current_user = request.session.get('username') print("请求定位信息!!!") print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) print("请求杀虫灯定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = RecentSCDdata.objects.filter( equip_id__equip_user=current_user).values() elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = RecentSCDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values() else: print("---管理员") sta1 = RecentSCDdata.objects.all().values() nums = sta1.count() data = {"nums":nums} data = json.dumps(data) return HttpResponse(data) # 地图定位请求接口: class Map_Locat_View(ListView): def get(self, request): pass def post(self, request): current_user = request.session.get('username') print("请求定位信息!!!") print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) req = request.POST.get('req') print("req:", req) # page = int(request.POST.get('page')) # print("page",page) if req == "cbd": print("请求测报灯定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = RecentCBDdata.objects.filter(equip_id__equip_user=current_user).values() elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = RecentCBDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values() else: print("---管理员") sta1 = RecentCBDdata.objects.all().values() sta2 = [] for x in sta1: try: sta2.append({ "equip_id": x['equip_id_id'], "equip_type": 3, "equip_name": x['equip_name'], "gps": eval(x['cbd_data'])['gps'], "lng": eval(x['cbd_data'])['lng'], "lat": eval(x['cbd_data'])['lat'] }) except: sta2.append({ "equip_id": x['equip_id_id'], "equip_type": 3, "equip_name": x['equip_name'], "gps": 2, "lng": eval(x['cbd_data'])['lng'], "lat": eval(x['cbd_data'])['lat'] }) # sta2 = [{ # "equip_id": x['equip_id_id'], # "equip_type": 3, # "equip_name": x['equip_name'], # "lng": eval(x['cbd_data'])['lng'], # "lat": eval(x['cbd_data'])['lat'] # } for x in sta1] data = json.dumps(sta2) # print("data:", data) return HttpResponse(data) elif req == "scd": print("请求杀虫灯定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = RecentSCDdata.objects.filter( equip_id__equip_user=current_user).values() elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = RecentSCDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values() else: print("---管理员") sta1 = RecentSCDdata.objects.all().values() sta2 = [] a = datetime.datetime.now() for x in sta1: try: sta2.append({ "equip_id": x['equip_id_id'], "equip_type": 2, "equip_name": x['equip_name'], "gps": eval(x['scd_data'])['gps'], "lng": eval(x['scd_data'])['lng'], "lat": eval(x['scd_data'])['lat'] }) except: sta2.append({ "equip_id": x['equip_id_id'], "equip_type": 2, "equip_name": x['equip_name'], "gps": 2, "lng": 113, "lat": 34 }) print("消耗时间为",datetime.datetime.now()-a) data = json.dumps(sta2) # print("data:", data) return HttpResponse(data) elif req == "qxz": print("请求气象站定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = QXZ_Base_Info.objects.filter( equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = QXZ_Base_Info.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta1 = QXZ_Base_Info.objects.all() sta2 = [{ "equip_id": x.equip_id_id, "equip_type": 5, "equip_name": x.equip_id.equip_name, "lng": x.lng, "lat": x.lat } for x in sta1] data = json.dumps(sta2) # print("data:", data) return HttpResponse(data) elif req == "bzy": print("请求孢子仪定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = BZYstatus.objects.filter( equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = BZYstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta1 = BZYstatus.objects.all() sta2 = [{ "equip_id": x.equip_id_id, "equip_type": 7, "equip_name": x.equip_id.equip_name, "lng": eval(x.bzy_status)['lng'], "lat": eval(x.bzy_status)['lat'] } for x in sta1] data = json.dumps(sta2) # print("data:", data) return HttpResponse(data) elif req == "xyq": print("请求性诱设备定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = YBQstatus.objects.filter( equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta1 = YBQstatus.objects.all() sta2 = [{ "equip_id": x.equip_id_id, "equip_type": 4, "equip_code": x.equip_code, "lng": eval(x.ybq_status)['lng'], "lat": eval(x.ybq_status)['lat'] } for x in sta1] data = json.dumps(sta2) # print("data:", data) return HttpResponse(data) elif req == "imei": print("imei搜索定位!") equip_id = request.POST.get('equip_id') print("equip_id:", equip_id) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # 非管理员筛选出当前用户: scd_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='2')) cbd_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='3')) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: # 代理商用户 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')) 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')) else: # 管理员用户 scd_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='2')) cbd_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='3')) if not scd_equips and not cbd_equips: sta5 = 0 data = json.dumps(sta5) return HttpResponse(data) # print("scd_equips:", scd_equips) # print("cbd_equips:", cbd_equips) else: sta2 = [] if scd_equips: for i in scd_equips: sta1 = SCDstatus.objects.filter( equip_id__equip_id__contains=equip_id) for x in sta1: try: sta2.append({ "equip_id": x.equip_id.equip_id, "equip_type": x.equip_id.equip_type.type_id, "equip_name": x.equip_id.equip_name, "gps": eval(x.scd_status)['gps'], "lng": x.lng, "lat": x.lat, "equip_location": x.equip_location }) except: sta2.append({ "equip_id": x.equip_id.equip_id, "equip_type": x.equip_id.equip_type.type_id, "equip_name": x.equip_id.equip_name, "gps": 2, "lng": x.lng, "lat": x.lat, "equip_location": x.equip_location }) if cbd_equips: for i in cbd_equips: sta3 = CBDstatus.objects.filter( equip_id__equip_id__contains=equip_id) sta4 = [] for x in sta3: try: sta4.append({ "equip_id": x.equip_id.equip_id, "equip_type": 3, "equip_name": x.equip_id.equip_name, "gps": eval(x.cbd_status)['gps'], "lng": x.lng, "lat": x.lat, "equip_location": x.equip_location }) except: sta4.append({ "equip_id": x.equip_id.equip_id, "equip_type": 3, "equip_name": x.equip_id.equip_name, "gps": 2, "lng": x.lng, "lat": x.lat, "equip_location": x.equip_location }) # sta4 = [{ # "equip_id": x.equip_id.equip_id, # "equip_type": x.equip_id.equip_type.type_id, # "equip_name": x.equip_id.equip_name, # "lng": x.lng, # "lat": x.lat, # "equip_location": x.equip_location # } for x in sta3] if scd_equips and cbd_equips: sta5 = sta2+sta4 elif scd_equips and not cbd_equips: sta5 = sta2 elif not scd_equips and cbd_equips: sta5 = sta4 data = json.dumps(sta5) return HttpResponse(data) # 个人信息 视图函数 class Personal_Info_View(View): def get(self, request): user_name = request.user.username user = MyUser.objects.get(username=user_name) if user.is_superuser: role = "superuser" elif user.is_staff: role = "staff" elif user.is_agency: role = "agency" else: role = "user" User_Log.objects.create(log_user=request.user.username, log_ip=request.META['REMOTE_ADDR'], log_desc='个人信息') return render(request, 'home/personal_info.html', context={'user': user, 'role': role}) def post(self, request): username = request.user.username print('username:',username) user = MyUser.objects.get(username=username) req = request.POST.get('req') if req == "info": user.user_phone = request.POST.get('phone') user.user_pro = request.POST.get('province') user.user_city = request.POST.get('city') user.user_area = request.POST.get('area') print("phone:", request.POST.get('phone')) print("province:", request.POST.get('province')) print("city:", request.POST.get('city')) print("area:", request.POST.get('area')) try: user.save() User_Log.objects.create(log_user=request.user.username, log_ip=request.META['REMOTE_ADDR'], log_desc='修改个人信息') data = "0" return HttpResponse(data) except: data = "1" return HttpResponse(data) # 修改头像: elif req == "photo": user_photo = request.FILES['upicture'] print("用户头像:", user_photo) user_photo_dir = 'user_photo/' # 判断如果路径不存在,即创建路径 if os.path.exists(user_photo_dir) == False: os.makedirs(user_photo_dir) img = Image.open(user_photo) img.save(user_photo_dir + username+".png") new_photo = user_photo_dir + username+".png" # 数据库关联设备,并在照片的表中存入路径: user.user_picture = new_photo user.save() data = "0" return HttpResponse(data) # 修改密码 视图函数 def change_pwd(request): if request.method == 'GET': user_name = request.user.username print("当前用户为:", user_name) return render(request, 'home/change_pwd.html') if request.method == 'POST': user_name = request.POST.get('username') print('user_name:',user_name) user = MyUser.objects.get(username=user_name) print("当前用户为:", user_name) oldpassword = request.POST.get('oldpassword') password = request.POST.get('password') print("post的oldpassword:", oldpassword) print("post的password:", password) if(check_password(oldpassword, user.password)): user.set_password(password) user.save() User_Log.objects.create(log_user=request.user.username, log_ip=request.META['REMOTE_ADDR'], log_desc='修改密码') data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) # 用户退出 @login_required def logout(request): print("用户退出") del request.session['username']# 删除session auth.logout(request) return redirect('/login') # 用户账户有效期 class User_Remaining_Days(View): def get(self, request): current_user = request.session.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser == True: pass else: # remaining_days为账号还剩xx天,user_date为xxxx年xx月xx日到期 remaining_days = (current_user.expire_date - datetime.datetime.now()).days user_date = current_user.expire_date user_date = datetime.date.strftime(user_date,"%Y-%m-%d %H:%M:%S")[0:10] # data = {"remaining_days":remaining_days, "user_date":user_date} # data = json.dumps(data) return render(request, 'home/renew.html', context={'remaining_days': remaining_days, 'user_date': user_date}) # 主页提示设备流量卡过期 class SCD_Alarm(ListView): def get(self,request): pass def post(self,request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---用户") _list = Equip.objects.filter(equip_user=current_user,equip_type=2).values() elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") _list = Equip.objects.filter(equip_agency=current_user.user_agency,equip_type=2).values() dat = [] data = [] for i in _list: dat.append(i['equip_id']) for x in Alarm_record.objects.filter(alarm_desc__contains="Dump").values(): if x['equip_id_id'] in dat: data.append({"equip_id":x['equip_id_id'],"time":x['alarm_time']}) data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) class Big_Data(ListView): def get(self,request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) return render(request, 'home/bigScreen.html', context={"current_user":current_user}) def post(self, request): pass # 主页提示设备流量卡过期 class Equip_Sim(ListView): def get(self,request): pass def post(self,request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---用户") simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") simlist = Equip_SimInfo.objects.all() dat = [] for i in simlist: dat.append({"equip_id":i.equip_id_id,"expiry_date":i.expiry_date}) data = dat data = json.dumps(data) return HttpResponse(data) # 展示页面判断是不是四情用户 class User_Judge(ListView): def get(self,request): pass def post(self,request): user_name = request.POST.get('username') pass_word = request.POST.get('password') print('输入的用户名:', user_name) user = MyUser.objects.extra( where=['binary username=%s'], params=[user_name]) print("user.exists():", user.exists()) if user.exists() == False: data = "1" return HttpResponse(data) else: user = MyUser.objects.get(username=user_name) if user.is_active != True: data = "2" return HttpResponse(data) else: if check_password(pass_word, user.password) != True: data = "3" return HttpResponse(data) else: print('登陆成功') user_obj = MyUser.objects.get(username=user_name) equip_list = Equip.objects.filter(equip_user=user_obj) type_list = [] for i in equip_list: type_list.append(i.equip_type_id) if user_obj.is_superuser: auth_user = authenticate( username=user_name, password=pass_word) auth_login(request, auth_user) # 将当前登录的用户名写入session request.session['username'] = user_name data = "0" return HttpResponse(data) elif 3 and 5 and 6 and 7 in type_list: auth_user = authenticate( username=user_name, password=pass_word) auth_login(request, auth_user) # 将当前登录的用户名写入session request.session['username'] = user_name data = "0" else: data = "5" return HttpResponse(data) # 用户基地展示图 class User_Display(ListView): def get(self,request): pass def post(self,request): current_user = request.session.get('username') print('current_user') print(current_user) current_user = MyUser.objects.get(username=current_user) equip_list = Equip.objects.filter(equip_user=current_user) if current_user.is_superuser: equip_list = Equip.objects.all() dat = [] for i in equip_list: if i.equip_type_id == 3: dat.append({"e_id":i.equip_id,"equip_type":"3"}) elif i.equip_type_id == 5: dat.append({"e_id":i.equip_id,"equip_type":"5"}) elif i.equip_type_id == 6: dat.append({"e_id":i.equip_id,"equip_type":"6"}) elif i.equip_type_id == 7: dat.append({"e_id":i.equip_id,"equip_type":"7"}) data = {"basename":current_user.base_name,"basephoto":"%s"%current_user.base_show,"dat":dat} data = json.dumps(data) return HttpResponse(data) # 测报灯数据展示页面 class CBD_Display(ListView): def get(self,request): pass def post(self,request): e_id = request.POST.get("imei") cbd_obj = CBDstatus.objects.get(equip_id=e_id) cbd_photo = CBDphoto.objects.filter(equip_id=e_id) photo_list = [] for x in cbd_photo: photo_list.append(x.addr) if len(photo_list) >= 10: break pest_list = [] for i in CBDphoto.objects.filter(equip_id=e_id): if i.indentify_result: pest_list.append({"pest":i.indentify_result,"time":i.upl_time,"at":i.at,"ah":i.ah}) if len(pest_list) >= 10: break data = {"photolist":photo_list,"pestlist":pest_list,"status":cbd_obj.cbd_status,"is_online":cbd_obj.is_online} data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) # 孢子仪数据展示页面 class BZY_Display(ListView): def get(self,request): pass def post(self,request): e_id = request.POST.get("imei") bzy_obj = BZYstatus.objects.get(equip_id=e_id) bzy_photo = BZYphoto.objects.filter(equip_id=e_id) photo_list = [] for x in bzy_photo: photo_list.append(x.addr) if len(photo_list) >= 10: break data = {"photolist":photo_list,"status":bzy_obj.bzy_status,"is_online":bzy_obj.is_online} data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) # 气象站数据展示页面 class QXZ_Display(ListView): def get(self,request): pass def post(self,request): e_id = request.POST.get("imei") qxz_dict_3 = copy.deepcopy(qxz_dict) sta1 = QXZdata.objects.filter(equip_id=e_id).values() dat = [] for x in sta1: sta = {"upl_time": x["upl_time"], "unit": [], "equip_id": x["equip_id_id"]} for i in eval(x["qxz_data"])["data"]: qxz_dict_3[i["eNum"]][0] = i["eValue"] d = copy.deepcopy(qxz_dict_3[i["eNum"]]) # 此处有坑 如果不深拷贝 后一次 qxz_dict[i["eNum"]][0] = i["eValue"] 赋值会把上次赋值替换掉 ek = i["eKey"] d.append(ek) d.append(i["eNum"]) sta["unit"].append(d) # qxz_dict[eval(x.qxz_data)['data'][0]["eNum"]] dat.append(sta) if len(dat) >= 10: break data = {"dat": dat} data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) # 展示页面地图 class Display_Map(ListView): def get(self,request): e_type = request.GET.get("type") return render(request, 'home/bigScreenMap.html', context={"type":e_type}) def post(self,request): current_user = request.session.get('username') e_type = request.POST.get("type") print('current_user') print(current_user) current_user = MyUser.objects.get(username=current_user) equip_list = Equip.objects.filter(equip_user=current_user) if current_user.is_superuser: equip_list = Equip.objects.all() dat = [] if e_type == "all": for i in equip_list: if i.equip_type_id == 3: lat = CBDstatus.objects.get(equip_id=i).lat lng = CBDstatus.objects.get(equip_id=i).lng # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng}) dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"3"}) elif i.equip_type_id == 5: lat = "" lng = "" # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng}) dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"5"}) elif i.equip_type_id == 6: lat = "" lng = "" # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng}) dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"6"}) elif i.equip_type_id == 7: try: lat = eval(BZYstatus.objects.get(equip_id=i).bzy_status)["lat"] lng = eval(BZYstatus.objects.get(equip_id=i).bzy_status)["lng"] except Exception as e: print("错误信息为:",e) lat = "" lng = "" # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng}) dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"7"}) elif e_type == "3": for i in equip_list: if i.equip_type_id == 3: lat = CBDstatus.objects.get(equip_id=i).lat lng = CBDstatus.objects.get(equip_id=i).lng # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng}) dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"3"}) elif e_type == "7": for i in equip_list: if i.equip_type_id == 7: try: lat = eval(BZYstatus.objects.get(equip_id=i).bzy_status)["lat"] lng = eval(BZYstatus.objects.get(equip_id=i).bzy_status)["lng"] except Exception as e: print("错误信息为:",e) lat = "" lng = "" # dat.append({"e_id":i.equip_id_id,"lat":lat,"lng":lng}) dat.append({"e_id":i.equip_id,"lat":lat,"lng":lng,"equip_type":"7"}) data = {"dat":dat} data = json.dumps(data) return HttpResponse(data) # 用户基地展示 class User_Base(ListView): def get(self,request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) base_name = current_user.base_name base_show = current_user.base_show return render(request, 'home/baseEdit.html', context={"base_name":base_name,"base_photo":base_show}) def post(self,request): pass # 用户基地保存 class User_Base_Save(ListView): def get(self,request): pass def post(self,request): basestr = request.FILES.get("basephoto") basename = request.POST.get("basename") current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) base_dir = "base_show/" if basestr: img = Image.open(basestr) img.save(base_dir + current_user.username +".png") current_user.base_show = base_dir + current_user.username +".png" current_user.base_name = basename current_user.save() return HttpResponse("0") class VR_List(ListView): def get(self, request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser: role = "superuser" elif current_user.is_staff: role = "staff" elif current_user.is_agency: role = "agency" else: role = "user" user_list = MyUser.objects.all() user_name = [] for i in user_list: user_name.append(i.username) return render(request, 'vr/panoramaList.html', context={"role":role,"user_name":user_name}) def post(self, request): pass class VR_Display(ListView): def get(self, request): e_id = request.GET.get('id') img = VR_Photo.objects.get(id=e_id).photo return render(request, 'vr/panorama.html', context={"img":img}) def post(self, request): pass class Home_VR(ListView): def get(self,request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) vr_obj = VR_Photo.objects.filter(user=current_user) if current_user.is_superuser or current_user.is_staff: vr_obj = VR_Photo.objects.all() data = [] for i in vr_obj: data.append({"id":i.id,"name":i.name,"user":i.user.username,"photo":i.photo}) data = json.dumps(data) return HttpResponse(data) def post(self,request): pass # VR图片上传 class VR_Upload(ListView): def get(self,request): pass def post(self,request): e_id = request.POST.get('id') current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) name = request.POST.get('name') uname = request.POST.get('uname') vruser = MyUser.objects.get(username=uname) # vr_display = request.FILES['display'] vr_photo = request.FILES['photo'] print("vr图片:", vr_photo) vr_photo_dir = 'vr_photo/' now_time = datetime.datetime.now().strftime("%Y%m%d%H%M%S") # new_display = vr_photo_dir + current_user.username + "dis" + now_time +".png" new_photo = vr_photo_dir + current_user.username + "pho" + now_time +".png" if os.path.exists(vr_photo_dir) == False: os.makedirs(vr_photo_dir) # img1 = Image.open(vr_display) # img1.save(new_display) img2 = Image.open(vr_photo) img2.save(new_photo) else: # img1 = Image.open(vr_display) # img1.save(new_display) img2 = Image.open(vr_photo) img2.save(new_photo) # 判断如果路径不存在,即创建路径 if e_id: vr_obj = VR_Photo.objects.get(id=e_id) # 数据库关联设备,并在照片的表中存入路径: vr_obj.name = name vr_obj.user = vruser # vr_obj.display = new_display vr_obj.photo = new_photo vr_obj.save() data = "0" else: print("new_photo:",new_photo) VR_Photo.objects.create(user=vruser,name=name,photo=new_photo) data = "0" return HttpResponse(data) # vr图片删除 class VR_Delete(ListView): def get(self,request): pass def post(self,request): print("-----vr image delete!-----") e_id = request.POST.get('id') photo_obj = VR_Photo.objects.get(id=e_id) if os.path.exists(photo_obj.photo) == True: # 删除图片文件 # os.remove(photo_obj.display) os.remove(photo_obj.photo) # 删除数据库照片列表中,照片路径: try: VR_Photo.objects.filter(id=e_id).delete() print("-----image delete ok!-----") data = "1" return HttpResponse(data) except: print("-----image delete failed!-----") data = "0" return HttpResponse(data) else: # 照片不存在,但是数据库有路径的情况会删除不掉 # 因此不管何时都删除数据库路径 try: VR_Photo.objects.filter(id=e_id).delete() print("-----image delete ok!-----") except: print("-----image not exist!-----") pass data = "1" return HttpResponse(data) # APP轮播图 class App_Img(ListView): def get(self,request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) app_img = APP_Img.objects.filter(user=current_user) return render(request, 'home/appBannerManage.html', context={"app_img":app_img}) def post(self,request): pass # APP轮播图上传 class App_Img_Upload(ListView): def get(self,request): pass def post(self,request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) # vr_display = request.FILES['display'] img = request.FILES['photo'] print("vr图片:", img) vr_photo_dir = 'app_file/app_img/' now_time = datetime.datetime.now().strftime("%Y%m%d%H%M%S") # new_display = vr_photo_dir + current_user.username + "dis" + now_time +".png" new_photo = vr_photo_dir + current_user.username + now_time +".png" if os.path.exists(vr_photo_dir) == False: os.makedirs(vr_photo_dir) # img1 = Image.open(vr_display) # img1.save(new_display) img2 = Image.open(img) img2.save(new_photo) else: # img1 = Image.open(vr_display) # img1.save(new_display) img2 = Image.open(img) img2.save(new_photo) APP_Img.objects.create(user=current_user,img=new_photo) data = "0" return HttpResponse(data) # app轮播图删除 class App_Img_Delete(ListView): def get(self,request): pass def post(self,request): print("-----app image delete!-----") e_id = request.POST.get('id') photo_obj = APP_Img.objects.get(id=e_id) if os.path.exists(photo_obj.img) == True: # 删除图片文件 # os.remove(photo_obj.display) os.remove(photo_obj.img) # 删除数据库照片列表中,照片路径: try: APP_Img.objects.filter(id=e_id).delete() print("-----image delete ok!-----") data = "1" return HttpResponse(data) except: print("-----image delete failed!-----") data = "0" return HttpResponse(data) else: # 照片不存在,但是数据库有路径的情况会删除不掉 # 因此不管何时都删除数据库路径 try: APP_Img.objects.filter(id=e_id).delete() print("-----image delete ok!-----") except: print("-----image not exist!-----") pass data = "1" return HttpResponse(data)