diff --git a/apps/mosquito/api/serializers.py b/apps/mosquito/api/serializers.py index e6834ba..98b453d 100644 --- a/apps/mosquito/api/serializers.py +++ b/apps/mosquito/api/serializers.py @@ -35,7 +35,15 @@ class MosqPostListSerializer(serializers.ModelSerializer): class DeviceTempLogSerializer(serializers.ModelSerializer): + last_time = serializers.SerializerMethodField() + create_time = serializers.SerializerMethodField() class Meta: model = DeviceTempLog - fields = '__all__' + fields = ['device_id', 'temperature', 'humidity', 'last_time', 'create_time'] + + def get_last_time(self, obj): + return obj.last_time.strftime('%Y-%m-%d %H:%M:%S') + + def get_create_time(self, obj): + return obj.last_time.strftime('%Y-%m-%d %H:%M:%S') diff --git a/apps/mosquito/api/views.py b/apps/mosquito/api/views.py index e1401b8..5f99b98 100644 --- a/apps/mosquito/api/views.py +++ b/apps/mosquito/api/views.py @@ -1,8 +1,10 @@ +import pytz from rest_framework.generics import ( ListAPIView, RetrieveAPIView, CreateAPIView ) +from django.utils.timezone import timedelta, datetime from rest_framework import filters from rest_framework.pagination import PageNumberPagination from django_filters.rest_framework import DjangoFilterBackend @@ -75,16 +77,15 @@ class DeviceTempLogListAPIView(ListAPIView, RoleMixin, DeviceListMixin): def get_queryset(self, *args, **kwargs): user_roles = self.get_role() - queryset_list = DeviceTempLog.objects.get_queryset().order_by('-create_time') + queryset = DeviceTempLog.objects.get_queryset().order_by('-create_time') if 'staff' in user_roles or 'admin' in user_roles: device_list = self.get_device_list() device_ids = [query.device_id for query in device_list if query.org == self.request.user.org] - queryset_list = queryset_list.filter(device_id__in=device_ids) - # device_id = self.request.GET.get('device_id') - - # if device_id: - # queryset_list = queryset_list.filter(device_id__icontains=device_id) - - return queryset_list + queryset = queryset.filter(device_id__in=device_ids) + last_day = self.request.GET.get('last_day') + if last_day == '1': + t = datetime.now().replace(tzinfo=pytz.timezone('UTC')) - timedelta(days=1) + queryset = queryset.filter(last_time__gte=t).filter(last_time__minute=0) + return queryset diff --git a/apps/mosquito/migrations/0011_auto_20190901_1020.py b/apps/mosquito/migrations/0011_auto_20190901_1020.py new file mode 100644 index 0000000..2caca1f --- /dev/null +++ b/apps/mosquito/migrations/0011_auto_20190901_1020.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.4 on 2019-09-01 02:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('smart', '__first__'), + ('mosquito', '0010_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='devicetemplog', + name='last_time', + field=models.DateTimeField(blank=True, db_index=True, null=True, verbose_name='日志时间'), + ), + ] diff --git a/apps/mosquito/models.py b/apps/mosquito/models.py index 72ef7e2..fb97ebd 100644 --- a/apps/mosquito/models.py +++ b/apps/mosquito/models.py @@ -93,7 +93,7 @@ class DeviceTempLog(models.Model): device_id = models.CharField(max_length=100, verbose_name='设备ID') temperature = models.DecimalField(max_digits=6, decimal_places=2, verbose_name='温度') humidity = models.DecimalField(max_digits=6, decimal_places=2, verbose_name='湿度') - last_time = models.DateTimeField(null=True, blank=True, verbose_name='日志时间') + last_time = models.DateTimeField(null=True, blank=True, db_index=True, verbose_name='日志时间') create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') class Meta: