From 5a45cd6a17e8d265cde4214e53518fb19b7b7350 Mon Sep 17 00:00:00 2001 From: xianfuxing Date: Mon, 25 May 2020 14:23:38 +0800 Subject: [PATCH] =?UTF-8?q?#=20=E6=B7=BB=E5=8A=A0device=5Fname?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/counter/api/serializers.py | 9 ++ apps/mosquito/admin.py | 2 +- ...mosqpost_mosqpoststatistic_mosquito_org.py | 94 +++++++++++++++++++ .../migrations/0013_deviceinfo_device_name.py | 18 ++++ apps/mosquito/models.py | 1 + 5 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 apps/mosquito/migrations/0012_deviceinfo_devicepoststatistic_mosqpost_mosqpoststatistic_mosquito_org.py create mode 100644 apps/mosquito/migrations/0013_deviceinfo_device_name.py diff --git a/apps/counter/api/serializers.py b/apps/counter/api/serializers.py index cb03cad..6656ba6 100644 --- a/apps/counter/api/serializers.py +++ b/apps/counter/api/serializers.py @@ -4,6 +4,7 @@ from datetime import datetime, time from django.db.models import Sum from rest_framework import serializers from counter.models import DeviceCount, DeviceInfo +from mosquito.models import DeviceInfo as CelexDeviceInfo from mosquito.models import MosqPostStatistic, DevicePostStatistic @@ -40,6 +41,7 @@ class DeviceCountSerializer(serializers.ModelSerializer): class DeviceInfoSerializer(serializers.ModelSerializer): + device_name = serializers.SerializerMethodField() status = serializers.SerializerMethodField() count = serializers.SerializerMethodField() signal = serializers.SerializerMethodField() @@ -64,6 +66,13 @@ class DeviceInfoSerializer(serializers.ModelSerializer): super().__init__(*args, **kwargs) self.latest = None + def get_device_name(self, obj): + qs = CelexDeviceInfo.objects.filter(device_id=obj.device_id) + if qs.count() > 0: + device = qs[0] + return device.device_name + return None + def get_status(self, obj): return obj.online diff --git a/apps/mosquito/admin.py b/apps/mosquito/admin.py index 325ab12..3df91fa 100644 --- a/apps/mosquito/admin.py +++ b/apps/mosquito/admin.py @@ -15,7 +15,7 @@ class MosqPostAdmin(admin.ModelAdmin): class DeviceAdmin(admin.ModelAdmin): - list_display = ['device_id', 'org'] + list_display = ['device_id', 'device_name', 'org'] list_filter = ['device_id', 'org'] ordering = ['device_id'] diff --git a/apps/mosquito/migrations/0012_deviceinfo_devicepoststatistic_mosqpost_mosqpoststatistic_mosquito_org.py b/apps/mosquito/migrations/0012_deviceinfo_devicepoststatistic_mosqpost_mosqpoststatistic_mosquito_org.py new file mode 100644 index 0000000..a95746f --- /dev/null +++ b/apps/mosquito/migrations/0012_deviceinfo_devicepoststatistic_mosqpost_mosqpoststatistic_mosquito_org.py @@ -0,0 +1,94 @@ +# Generated by Django 2.2.4 on 2020-05-25 06:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('smart', '__first__'), + ('mosquito', '0011_auto_20190901_1020'), + ] + + operations = [ + migrations.CreateModel( + name='MosqPostStatistic', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('total', models.PositiveIntegerField(verbose_name='总数')), + ('increment', models.IntegerField(verbose_name='增量')), + ('date', models.DateField(unique=True, verbose_name='日期')), + ], + options={ + 'verbose_name': '统计报表', + 'verbose_name_plural': '统计报表', + }, + ), + migrations.CreateModel( + name='Mosquito', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100, verbose_name='设备名称')), + ('device_id', models.CharField(max_length=100, verbose_name='设备ID')), + ('region', models.CharField(max_length=50, verbose_name='区域')), + ], + options={ + 'verbose_name': '灭蚊灯', + 'verbose_name_plural': '灭蚊灯', + }, + ), + migrations.CreateModel( + name='Org', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100, verbose_name='组织名称')), + ('code', models.CharField(max_length=10, verbose_name='组织代码')), + ('desc', models.CharField(blank='True', max_length=100, verbose_name='描述')), + ], + options={ + 'verbose_name': '客户组织', + 'verbose_name_plural': '客户组织', + }, + ), + migrations.CreateModel( + name='MosqPost', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('led', models.PositiveIntegerField(verbose_name='灭蚊数')), + ('energy', models.PositiveIntegerField(verbose_name='电量')), + ('time', models.DateTimeField(auto_now_add=True)), + ('mosq', models.ForeignKey(on_delete='PROTECT', to='mosquito.Mosquito', verbose_name='灭蚊灯')), + ('smart_push', models.ForeignKey(on_delete='PROTECT', to='smart.SmartPush')), + ], + options={ + 'verbose_name': '灭蚊数据', + 'verbose_name_plural': '灭蚊数据', + }, + ), + migrations.CreateModel( + name='DevicePostStatistic', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('device_id', models.CharField(max_length=100, verbose_name='设备ID')), + ('total', models.PositiveIntegerField(verbose_name='总数')), + ('date', models.DateField(verbose_name='日期')), + ('org', models.ForeignKey(on_delete='PROTECT', to='mosquito.Org', verbose_name='所在组织')), + ], + options={ + 'verbose_name': '设备日志统计表', + 'verbose_name_plural': '设备日志统计表', + }, + ), + migrations.CreateModel( + name='DeviceInfo', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('device_id', models.CharField(max_length=100, unique=True, verbose_name='设备ID')), + ('org', models.ForeignKey(on_delete='PROTECT', to='mosquito.Org', verbose_name='所在组织')), + ], + options={ + 'verbose_name': '灭蚊灯设备', + 'verbose_name_plural': '灭蚊灯设备', + }, + ), + ] diff --git a/apps/mosquito/migrations/0013_deviceinfo_device_name.py b/apps/mosquito/migrations/0013_deviceinfo_device_name.py new file mode 100644 index 0000000..51638e0 --- /dev/null +++ b/apps/mosquito/migrations/0013_deviceinfo_device_name.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2020-05-25 06:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mosquito', '0012_deviceinfo_devicepoststatistic_mosqpost_mosqpoststatistic_mosquito_org'), + ] + + operations = [ + migrations.AddField( + model_name='deviceinfo', + name='device_name', + field=models.CharField(blank=True, max_length=100, null=True, verbose_name='设备名称'), + ), + ] diff --git a/apps/mosquito/models.py b/apps/mosquito/models.py index a0cc2f7..b72006b 100644 --- a/apps/mosquito/models.py +++ b/apps/mosquito/models.py @@ -86,6 +86,7 @@ class Org(models.Model): class DeviceInfo(models.Model): device_id = models.CharField(max_length=100, unique=True, verbose_name='设备ID') + device_name = models.CharField(max_length=100, blank=True, null=True, verbose_name='设备名称') org = models.ForeignKey(Org, verbose_name='所在组织', on_delete='PROTECT') class Meta: