No Description

point_views.py 7.7KB

    # -*- coding: utf-8 -*- from __future__ import division from django.conf import settings from django_logit import logit from django_query import get_query_value from django_response import response from paginator import pagination from TimeConvert import TimeConvert as tc from equipment.models import (IsolationPointInfo, IsolationPointUserInfo, ThermometerEquipmentInfo, ThermometerMeasureLogInfo) from utils.error.errno_utils import IsolationPointStatusCode @logit def get_point_list(request): page = request.POST.get('page', 1) num = request.POST.get('num', 20) points = IsolationPointInfo.objects.filter(status=True) points, left = pagination(points, page, num) points = [point.data for point in points] return response(data={ 'points': points, 'left': left, }) @logit def get_point_info(request): point_id = request.POST.get('point_id', '') try: point = IsolationPointInfo.objects.get(point_id=point_id, status=True) except IsolationPointInfo.DoesNotExist: return response(IsolationPointStatusCode.ISOLATIONPOINT_NOT_FOUND) return response(data=point.data) @logit def update_point_info(request): point_id = request.POST.get('point_id', '') upload_period = get_query_value(request, 'upload_period', val_cast_type='listjson') IsolationPointInfo.objects.filter(point_id=point_id).update(point_upload_period=upload_period) return response() @logit def get_point_fields(request): point_id = request.POST.get('point_id', '') user_id = request.POST.get('user_id', '') try: point = IsolationPointInfo.objects.get(point_id=point_id, status=True) except IsolationPointInfo.DoesNotExist: return response(IsolationPointStatusCode.ISOLATIONPOINT_NOT_FOUND) try: ipui = IsolationPointUserInfo.objects.get(user_id=user_id, point_id=point_id) except IsolationPointUserInfo.DoesNotExist: ipui = None return response(data={ 'point_name': point.point_name, 'fields': point.point_fields, 'user_info': ipui.fields if ipui else [], }) @logit def save_point_fields(request): point_id = request.POST.get('point_id', '') user_id = request.POST.get('user_id', '') fields = get_query_value(request, 'fields', val_cast_type='listjson') IsolationPointUserInfo.objects.exclude(point_id=point_id).update(status=False) IsolationPointUserInfo.objects.update_or_create(point_id=point_id, user_id=user_id, defaults={ 'fields': fields, 'status': True, }) return response() @logit def bind_eqpt(request): macid = request.POST.get('macid', '') user_id = request.POST.get('user_id', '') try: ipui = IsolationPointUserInfo.objects.get(user_id=user_id, status=True) except IsolationPointUserInfo.DoesNotExist: return response(IsolationPointStatusCode.ISOLATIONPOINT_USER_NOT_FOUND) # 清除之前绑定的设备 ThermometerEquipmentInfo.objects.filter(ipui_pk=ipui.pk).update(ipui_pk=0, active_status=ThermometerEquipmentInfo.OFFLINE) eqpt, _ = ThermometerEquipmentInfo.objects.update_or_create(macid=macid, defaults={ 'point_id': ipui.point_id, 'ipui_pk': ipui.pk, 'active_status': ThermometerEquipmentInfo.ONLINE, 'active_at': tc.utc_datetime() }) eqpt.ipui_pks += [ipui.pk] eqpt.save() ipui.eqpts += [macid] ipui.save() return response() @logit def mp_upload_temperature(request): macid = request.POST.get('macid', '') userid = request.POST.get('user_id', '') temperature = request.POST.get('temperature', '') try: ipui = IsolationPointUserInfo.objects.get(user_id=userid, status=True) except IsolationPointUserInfo.DoesNotExist: ThermometerMeasureLogInfo.objects.create(point_id='', macid=macid, user_id=userid, temperature=temperature, temperature_src=ThermometerMeasureLogInfo.MP, chg_sta=False, ignore_temperature=False, ignore_fever_temperature=False, upload_temperature_info='') return response() ThermometerMeasureLogInfo.objects.create(point_id=ipui.point_id, macid=macid, user_id=userid, temperature=temperature, temperature_src=ThermometerMeasureLogInfo.MP, chg_sta=False, ignore_temperature=False, ignore_fever_temperature=False, upload_temperature_info='') ipui.observed_ymds = list(set(ipui.observed_ymds + [tc.local_string(format='%Y-%m-%d')])) ipui.observed_days = len(ipui.observed_ymds) ipui.temperature = temperature ipui.last_submit_at = tc.utc_datetime() ipui.save() return response() @logit def mp_temperature_list(request): user_id = request.POST.get('user_id', '') point_id = request.POST.get('point_id', '') page = request.POST.get('page', 1) num = request.POST.get('num', 20) logs = ThermometerMeasureLogInfo.objects.filter(point_id=point_id, user_id=user_id, status=True).order_by('-created_at') count = logs.count() logs, left = pagination(logs, page, num) logs = [log.userdata for log in logs] return response(data={ 'logs': logs, 'left': left, 'count': count, }) def admin_user_results(request): point_id = request.POST.get('point_id', '') kw = request.POST.get('kw', '') page = request.POST.get('page', 1) num = request.POST.get('num', 20) ipuis = IsolationPointUserInfo.objects.filter(point_id=point_id, status=True) if kw: ipuis = ipuis.filter(fields__icontains=kw) total_active_eqpt_num = ipuis.count() ipuis, left = pagination(ipuis, page, num) ipuis = [ipui.data for ipui in ipuis] has_upload_temperature_num = len([1 for ipui in ipuis if ipui.get('temperature_has_upload', '') == IsolationPointUserInfo.HAS_YET_UPLOAD]) fever_num = len([1 for ipui in ipuis if ipui.get('temperature', 0) > settings.FEVER_TEMPERATURE]) return response(data={ 'ipuis': ipuis, 'left': left, 'total_active_eqpt_num': total_active_eqpt_num, 'has_upload_temperature_num': has_upload_temperature_num, 'not_upload_temperature_num': total_active_eqpt_num - has_upload_temperature_num, 'fever_num': fever_num, }) @logit def admin_point_user_unbind(request): user_id = request.POST.get('user_id', '') active = int(request.POST.get('active', 0)) try: ipui = IsolationPointUserInfo.objects.get(user_id=user_id, status=True) except IsolationPointUserInfo.DoesNotExist: return response() ipui.leave_at = tc.utc_datetime() ipui.status = False ipui.remark = '' ipui.save() try: eqpt = ThermometerEquipmentInfo.objects.get(ipui_pk=ipui.pk, status=True) except ThermometerEquipmentInfo.DoesNotExist: return response() eqpt.active_status = active eqpt.ipui_pk = 0 eqpt.save() return response() @logit def admin_point_user_remark(request): user_id = request.POST.get('user_id', '') remark = request.POST.get('remark', '') # 存放历史备注记录 try: ipui = IsolationPointUserInfo.objects.get(user_id=user_id, status=True) except IsolationPointUserInfo.DoesNotExist: return response() ipui.remark = remark ipui.remarks += [remark] ipui.save() return response() @logit def admin_point_user_temperature_history(request): user_id = request.POST.get('user_id', '') point_id = request.POST.get('point_id', '') page = request.POST.get('page', 1) num = request.POST.get('num', 20) logs = ThermometerMeasureLogInfo.objects.filter(point_id=point_id, user_id=user_id, status=True) count = logs.count() logs, left = pagination(logs, page, num) logs = [log.data for log in logs] return response(data={ 'logs': logs, 'left': left, 'count': count, })