|
# -*- coding: utf-8 -*-
from __future__ import division
from django.db.models import Q
from django_logit import logit
from django_response import response
from TimeConvert import TimeConvert as tc
from equipment.models import (IsolationPointInfo, ThermometerEquipmentInfo, ThermometerMeasureInfo,
ThermometerMeasureLogInfo)
from utils.error.errno_utils import IsolationPointStatusCode, ThermometerEquipmentStatusCode
@logit
def eqpt_bind(request):
point_id = request.POST.get('point_id', '')
macid = request.POST.get('macid', '')
sn = request.POST.get('sn', '')
ThermometerEquipmentInfo.objects.update_or_create(macid=macid, defaults={
'point_id': point_id,
'sn': sn,
})
return response()
@logit
def eqpt_onoff(request):
macid = request.POST.get('macid', '')
active = request.POST.get('active', 0)
ThermometerEquipmentInfo.objects.update_or_create(macid=macid, defaults={
'active_status': active,
'active_at': tc.utc_datetime(),
})
return response()
@logit
def eqpt_list(request):
point_id = request.POST.get('point_id', '')
macid = request.POST.get('macid', '')
eqpts = ThermometerEquipmentInfo.objects.filter(point_id=point_id, status=True)
if macid:
eqpts = eqpts.filter(macid=macid)
eqpts = [eqpt.data for eqpt in eqpts]
total_num = len(eqpts)
active_num = len([1 for eqpt in eqpts if eqpt.get('active_status') == ThermometerEquipmentInfo.ONLINE])
return response(data={
'eqpts': eqpts,
'total_num': total_num,
'active_num': active_num,
'unactive_num': total_num - active_num,
})
@logit
def eqpt_result(request):
point_id = request.POST.get('point_id', '')
kw = request.POST.get('kw', '')
try:
point = IsolationPointInfo.objects.get(point_id=point_id, status=True)
except IsolationPointInfo.DoesNotExist:
return response(IsolationPointStatusCode.ISOLATIONPOINT_NOT_FOUND)
logs = ThermometerMeasureInfo.objects.filter(point_id=point_id, point_measure_ymd=tc.local_string(format='%Y-%m-%d'), point_measure_window=point.point_measure_window, status=True).order_by('-pk')
eqpts = ThermometerEquipmentInfo.objects.filter(point_id=point_id, active_status=ThermometerEquipmentInfo.ONLINE, status=True)
if kw:
eqpts = eqpts.filter(Q(name__icontains=kw) | Q(phone__icontains=kw))
eqpts = [eqpt.data for eqpt in eqpts]
return response(data={
'eqpts': eqpts,
})
@logit
def upload_temperature(request):
macid = request.POST.get('macid', '')
name = request.POST.get('name', '')
sex = request.POST.get('sex', 0)
age = request.POST.get('age', 0)
phone = request.POST.get('phone', '')
temperature = request.POST.get('temperature', 0)
try:
eqpt = ThermometerEquipmentInfo.objects.get(macid=macid, status=True)
except ThermometerEquipmentInfo.DoesNotExist:
return response(ThermometerEquipmentStatusCode.THERMOMETER_EQUIPMENT_NOT_FOUND)
try:
point = IsolationPointInfo.objects.get(point_id=eqpt.point_id, status=True)
except IsolationPointInfo.DoesNotExist:
return response(IsolationPointStatusCode.ISOLATIONPOINT_NOT_FOUND)
point_measure_ymd = tc.local_string(format='%Y-%m-%d')
point_measure_window = point.current_measure_window
eqpt.name = name
eqpt.sex = sex
eqpt.age = age
eqpt.phone = phone
eqpt.last_submit_at = tc.utc_datetime()
eqpt.save()
ThermometerMeasureLogInfo.objects.create(point_id=eqpt.point_id, macid=macid, temperature=temperature)
if point_measure_window:
ThermometerMeasureInfo.objects.update_or_create(point_id=eqpt.point_id, point_measure_ymd=point_measure_ymd, point_measure_window=point_measure_window, macid=macid, defaults={
'temperature': temperature,
})
return response()
|