from django.shortcuts import render from rest_framework.views import APIView from rest_framework.authentication import BaseAuthentication from safesite.models import User from rest_framework.exceptions import AuthenticationFailed from .models import DWasteHandleRecord, DWasteKeepRecord, DWasteMakeList, DWasteMakeRecord, Drain, GasEmit, NormalWasteRecord, Waste from safesite.views import transjson, fenye, MyEncoder from django.http import HttpResponse, JsonResponse import json # Create your views here. def myAuthentication(BaseAuthentication): def authenticate(self, request): user = User.objects.get(userid=request.session['userid']) if user: return (user, None) raise AuthenticationFailed() def HtmlWaste(request): return render(request, 'waste.html') def HtmlDangerousWaste(request): return render(request, 'dangerousWaste.html') def HtmlWgas(request): return render(request, 'wgas.html') def HtmlWwater(request): return render(request, 'wwater.html') def HtmlGasPredict(request): return render(request, 'gaspredict.html') def ApiWaste(request, action): user = User.objects.get(userid=request.session['userid']) if action == 'list': objs = Waste.objects.filter(usecomp=user.usecomp, is_deleted=False) objs = objs.filter(type=request.GET.get('type', 1)) total = objs.count() startnum, endnum = fenye(request) objs = objs.order_by('id')[startnum:endnum].values('id', 'number', 'name', 'type') return HttpResponse(transjson(total, objs), content_type="application/json") elif action == 'combobox': objs = Waste.objects.filter(usecomp=user.usecomp, is_deleted=False) objs = objs.filter(type=request.GET.get('type', 1)).order_by('id') data = objs.values('id', 'number', 'name') return JsonResponse(list(data), safe=False) elif action == 'create': data = json.loads(request.body.decode('utf-8')) obj= Waste() obj.number = data['number'] obj.name = data['name'] obj.type = data['type'] obj.create_by = user obj.update_by = user obj.usecomp = user.usecomp obj.save() return JsonResponse({"code":1}) elif action == 'delete': data = json.loads(request.body.decode('utf-8')) obj = Waste.objects.get(id=data['id']) obj.delete() return JsonResponse({"code":1}) elif action == 'update': data = json.loads(request.body.decode('utf-8')) obj = Waste.objects.get(id=data['id']) obj.number = data['number'] obj.name = data['name'] obj.update_by=user obj.save() return JsonResponse({"code":1}) def ApiNormalWasteRecord(request, action): user = User.objects.get(userid=request.session['userid']) if action == 'list': objs = NormalWasteRecord.objects.filter(usecomp=user.usecomp, is_deleted=False) if request.GET.get('waste', None): objs = objs.filter(waste=request.GET.get('waste')) total = objs.count() startnum, endnum = fenye(request) objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'gen_date', 'dis_date', 'gen_count', 'dis_count', 'operator__name', 'waste__name', 'waste', 'operator', 'inv_count') return HttpResponse(transjson(total, objs), content_type="application/json") elif action == 'create': data = json.loads(request.body.decode('utf-8')) obj = NormalWasteRecord() obj.waste = Waste.objects.get(id=data['waste']) obj.operator = User.objects.get(userid=data['operator']) obj.create_by = user obj.update_by = user obj.usecomp = user.usecomp obj.gen_date = data['gen_date'] obj.dis_date = data['dis_date'] obj.gen_count = data['gen_count'] obj.dis_count = data['dis_count'] obj.inv_count = data['inv_count'] obj.save() return JsonResponse({"code":1}) elif action == 'delete': data = json.loads(request.body.decode('utf-8')) obj = NormalWasteRecord.objects.get(id=data['id']) obj.delete() return JsonResponse({"code":1}) def ApiDWasteMakeList(request,action): user = User.objects.get(userid=request.session['userid']) if action == 'list': objs = DWasteMakeList.objects.filter(usecomp=user.usecomp, is_deleted=False) if request.GET.get('waste', None): objs = objs.filter(waste=request.GET.get('waste')) total = objs.count() startnum, endnum = fenye(request) objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'process', 'source', 'goto', 'companyname', 'gen_count', 'license', 'waste__name', 'waste__number', 'create_time') return HttpResponse(transjson(total, objs), content_type="application/json") elif action == 'create': data = json.loads(request.body.decode('utf-8')) obj = DWasteMakeList() obj.waste = Waste.objects.get(id=data['waste']) obj.create_by = user obj.update_by = user obj.usecomp = user.usecomp obj.process = data['process'] obj.source = data['source'] obj.goto = data['goto'] obj.companyname = data['companyname'] obj.gen_count = data['gen_count'] obj.license = data['license'] obj.save() return JsonResponse({"code":1}) elif action == 'delete': data = json.loads(request.body.decode('utf-8')) obj = DWasteMakeList.objects.get(id=data['id']) obj.delete() return JsonResponse({"code":1}) def ApiDWasteMakeRecord(request,action): user = User.objects.get(userid=request.session['userid']) if action == 'list': objs = DWasteMakeRecord.objects.filter(usecomp=user.usecomp, is_deleted=False) if request.GET.get('waste', None): objs = objs.filter(waste=request.GET.get('waste')) total = objs.count() startnum, endnum = fenye(request) objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'gen_time', 'gen_count', 'container', 'container_count', 'trans_time', 'trans_count', 'waste__name', 'waste__number', 'goto') return HttpResponse(transjson(total, objs), content_type="application/json") elif action == 'create': data = json.loads(request.body.decode('utf-8')) obj = DWasteMakeRecord() obj.waste = Waste.objects.get(id=data['waste']) obj.create_by = user obj.update_by = user obj.usecomp = user.usecomp obj.gen_time = data['gen_time'] obj.gen_count = data['gen_count'] obj.goto = data['goto'] obj.container = data['container'] obj.container_count = data['container_count'] obj.trans_time = data['trans_time'] obj.trans_count = data['trans_count'] obj.save() return JsonResponse({"code":1}) elif action == 'delete': data = json.loads(request.body.decode('utf-8')) obj = DWasteMakeRecord.objects.get(id=data['id']) obj.delete() return JsonResponse({"code":1}) def ApiDWasteKeepRecord(request,action): user = User.objects.get(userid=request.session['userid']) if action == 'list': objs = DWasteKeepRecord.objects.filter(usecomp=user.usecomp, is_deleted=False) if request.GET.get('waste', None): objs = objs.filter(waste=request.GET.get('waste')) total = objs.count() startnum, endnum = fenye(request) objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'in_time', 'in_count', 'source', 'container', 'container_count', 'place', 'out_time', 'out_count', 'waste__name', 'waste__number', 'goto') return HttpResponse(transjson(total, objs), content_type="application/json") elif action == 'create': data = json.loads(request.body.decode('utf-8')) obj = DWasteKeepRecord() obj.waste = Waste.objects.get(id=data['waste']) obj.create_by = user obj.update_by = user obj.usecomp = user.usecomp obj.in_time = data['in_time'] obj.in_count = data['in_count'] obj.source = data['source'] obj.place = data['place'] obj.goto = data['goto'] obj.container = data['container'] obj.container_count = data['container_count'] obj.out_time = data['out_time'] obj.out_count = data['out_count'] obj.save() return JsonResponse({"code":1}) elif action == 'delete': data = json.loads(request.body.decode('utf-8')) obj = DWasteKeepRecord.objects.get(id=data['id']) obj.delete() return JsonResponse({"code":1}) def ApiDWasteHandleRecord(request,action): user = User.objects.get(userid=request.session['userid']) if action == 'list': objs = DWasteHandleRecord.objects.filter(usecomp=user.usecomp, is_deleted=False) if request.GET.get('waste', None): objs = objs.filter(waste=request.GET.get('waste')) total = objs.count() startnum, endnum = fenye(request) objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'accept_time', 'accept_count', 'source', 'container', 'container_count', 'handle_time', 'handle_method', 'waste__name', 'waste__number') return HttpResponse(transjson(total, objs), content_type="application/json") elif action == 'create': data = json.loads(request.body.decode('utf-8')) obj = DWasteHandleRecord() obj.waste = Waste.objects.get(id=data['waste']) obj.create_by = user obj.update_by = user obj.usecomp = user.usecomp obj.accept_time = data['accept_time'] obj.accept_count = data['accept_count'] obj.source = data['source'] obj.container = data['container'] obj.container_count = data['container_count'] obj.handle_time = data['handle_time'] obj.handle_method = data['handle_method'] obj.save() return JsonResponse({"code":1}) elif action == 'delete': data = json.loads(request.body.decode('utf-8')) obj = DWasteHandleRecord.objects.get(id=data['id']) obj.delete() return JsonResponse({"code":1}) def ApiDrain(request, action): user = User.objects.get(userid=request.session['userid']) if action == 'list': objs = Drain.objects.filter(usecomp=user.usecomp, is_deleted=False) total = objs.count() startnum, endnum = fenye(request) objs = objs.order_by('id')[startnum:endnum].values('id', 'number', 'name') return HttpResponse(transjson(total, objs), content_type="application/json") elif action == 'combobox': objs = Drain.objects.filter(usecomp=user.usecomp, is_deleted=False).order_by('id') data = objs.values('id', 'number', 'name') return JsonResponse(list(data), safe=False) elif action == 'create': data = json.loads(request.body.decode('utf-8')) obj= Drain() obj.number = data['number'] obj.name = data['name'] obj.create_by = user obj.update_by = user obj.usecomp = user.usecomp obj.save() return JsonResponse({"code":1}) elif action == 'delete': data = json.loads(request.body.decode('utf-8')) obj = Drain.objects.get(id=data['id']) obj.delete() return JsonResponse({"code":1}) elif action == 'update': data = json.loads(request.body.decode('utf-8')) obj = Drain.objects.get(id=data['id']) obj.number = data['number'] obj.name = data['name'] obj.update_by=user obj.save() return JsonResponse({"code":1}) def ApiGasEmit(request,action): user = User.objects.get(userid=request.session['userid']) if action == 'list': objs = GasEmit.objects.filter(usecomp=user.usecomp, is_deleted=False) if request.GET.get('drain', None): objs = objs.filter(drain=request.GET.get('drain')) total = objs.count() startnum, endnum = fenye(request) objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'drain', 'watch_time', 'out_smoke', 'out_o2', 'out_so2', 'out_so2_s', 'out_particle', 'out_particle_s', 'drain__name', 'drain__number' , 'out_nox', 'out_nox_s', 'in_smoke', 'in_o2', 'in_so2', 'in_so2_s', 'in_particle', 'in_particle_s' , 'in_nox', 'in_nox_s') return HttpResponse(transjson(total, objs), content_type="application/json") elif action == 'create': data = json.loads(request.body.decode('utf-8')) obj = GasEmit() obj.drain = Drain.objects.get(id=data['drain']) obj.create_by = user obj.update_by = user obj.usecomp = user.usecomp obj.watch_time = data['watch_time'] obj.out_smoke = data['out_smoke'] obj.out_o2 = data['out_o2'] obj.out_so2 = data['out_so2'] obj.out_so2_s = data['out_so2_s'] obj.out_particle = data['out_particle'] obj.out_particle_s = data['out_particle_s'] obj.out_nox = data['out_nox'] obj.out_nox_s = data['out_nox_s'] obj.in_smoke = data['in_smoke'] obj.in_o2 = data['in_o2'] obj.in_so2 = data['in_so2'] obj.in_so2_s = data['in_so2_s'] obj.in_particle = data['in_particle'] obj.in_particle_s = data['in_particle_s'] obj.in_nox = data['in_nox'] obj.in_nox_s = data['in_nox_s'] obj.save() return JsonResponse({"code":1}) elif action == 'delete': data = json.loads(request.body.decode('utf-8')) obj = GasEmit.objects.get(id=data['id']) obj.delete() return JsonResponse({"code":1}) import numpy as np from .predict import GM11 def ApiGasPredict(request, element, drainId): element_list = list(GasEmit.objects.filter(is_deleted=False, drain__id=drainId)\ .order_by('-create_time')[0:5].values_list(element, flat=True)) element_list.reverse() if len(element_list)>=3: result = GM11(np.array(element_list), 3) element_list.extend(result['predict']['value']) ret = {"code":1, "data":[round(i,2) for i in element_list]} return JsonResponse(ret) else: return JsonResponse({"code":0, "msg":'至少需要三条记录'})