From 9a5d247c07e667dd37077c5b0cd1c96478fbcdaa Mon Sep 17 00:00:00 2001 From: "VIJAY\\vijay" Date: Wed, 7 Sep 2022 15:23:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B0=94=E8=B1=A1=E5=8F=B0=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E4=BB=8E=E8=BD=AC=E5=AD=98=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=90=8E=E5=8F=B0=E6=B0=94=E8=B1=A1=E5=8F=B0?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mosquito/api/serializers.py | 21 ++++++++++++++++++++- apps/mosquito/api/views.py | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/apps/mosquito/api/serializers.py b/apps/mosquito/api/serializers.py index bca897b..88d810e 100644 --- a/apps/mosquito/api/serializers.py +++ b/apps/mosquito/api/serializers.py @@ -1,5 +1,6 @@ from rest_framework import serializers -from mosquito.models import Mosquito, MosqPost, DeviceTempLog, WeatherLog +from django.core.cache import cache +from mosquito.models import Mosquito, MosqPost, DeviceTempLog, WeatherLog, WeatherStationInfo from smart.api.serializers import SmartPushListSerializer @@ -50,6 +51,7 @@ class DeviceTempLogSerializer(serializers.ModelSerializer): class WeatherLogSerializer(serializers.ModelSerializer): + device_name = serializers.SerializerMethodField() power = serializers.SerializerMethodField() data_time = serializers.SerializerMethodField() create_time = serializers.SerializerMethodField() @@ -79,11 +81,28 @@ class WeatherLogSerializer(serializers.ModelSerializer): 'create_time', ] + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.latest = None + self.cur_device = None + def get_power(self, obj): # power max 12.6V, min 8.5V power = int((float(obj.power) - 8.5) / 4.1 * 100) return str(power) + + def get_device_name(self, obj): + device_id = obj.device_id + device = cache.get(device_id) + if device: + self.device = device + return device.device_name + else: + return obj.device_name + return None + def get_data_time(self, obj): return obj.data_time.strftime('%Y-%m-%d %H:%M:%S') + def get_create_time(self, obj): return obj.data_time.strftime('%Y-%m-%d %H:%M:%S') diff --git a/apps/mosquito/api/views.py b/apps/mosquito/api/views.py index c0badbc..67c2ac4 100644 --- a/apps/mosquito/api/views.py +++ b/apps/mosquito/api/views.py @@ -132,7 +132,7 @@ class WeatherLogListAPIView(ListAPIView, RoleMixin, WeatherStationListMixin): if qs.count() > 0: queryset = qs else: - qs = WeatherLog.objects.filter(device_name__contains=device) + qs = WeatherStationInfo.objects.filter(device_name__contains=device) device_ids = [device.device_id for device in qs] queryset = queryset.filter(device_id__in=device_ids) last_day = self.request.GET.get('last_day')