:art: temperature_upload / temperature_list

huangqimin001 vor 2 Jahren
Ursprung
Commit
412346bb8e

+ 42 - 0
api/temperature_views.py

@@ -0,0 +1,42 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from django_logit import logit
4
+from django_response import response
5
+from paginator import pagination
6
+
7
+from temperature.models import TemperatureInfo
8
+from thermometer.models import ThermometerInfo
9
+
10
+
11
+@logit
12
+def temperature_upload(request):
13
+    user_id = request.POST.get('user_id', '')
14
+    macid = request.POST.get('macid', '')
15
+    temperature = request.POST.get('temperature', 0)
16
+
17
+    thermometer, _ = ThermometerInfo.objects.get_or_create(user_id=user_id, macid=macid)
18
+
19
+    TemperatureInfo.objects.create(
20
+        thermometer_id=thermometer.thermometer_id,
21
+        user_id=user_id,
22
+        macid=macid,
23
+        temperature=temperature,
24
+    )
25
+
26
+    return response()
27
+
28
+
29
+@logit
30
+def temperature_list(request):
31
+    user_id = request.POST.get('user_id', '')
32
+    page = request.POST.get('page', 1)
33
+    num = request.POST.get('num', 20)
34
+
35
+    temperatures = TemperatureInfo.objects.filter(user_id=user_id, status=True)
36
+    temperatures, left = pagination(temperatures, page, num)
37
+    temperatures = [temperature.data for temperature in temperatures]
38
+
39
+    return response(data={
40
+        'temperatures': temperatures,
41
+        'left': left,
42
+    })

+ 1 - 1
api/thermometer_views.py

@@ -23,7 +23,7 @@ def thermometer_list(request):
23 23
     page = request.POST.get('page', 1)
24 24
     num = request.POST.get('num', 20)
25 25
 
26
-    thermometers = ThermometerInfo.objects.filter(user_id=user_id)
26
+    thermometers = ThermometerInfo.objects.filter(user_id=user_id, status=True)
27 27
     thermometers, left = pagination(thermometers, page, num)
28 28
     thermometers = [thermometer.data for thermometer in thermometers]
29 29
 

+ 6 - 1
api/urls.py

@@ -2,7 +2,7 @@
2 2
 
3 3
 from django.urls import re_path
4 4
 
5
-from api import mini_views, oauth_views, thermometer_views
5
+from api import mini_views, oauth_views, temperature_views, thermometer_views
6 6
 
7 7
 
8 8
 urlpatterns = [
@@ -22,3 +22,8 @@ urlpatterns += [
22 22
     re_path(r'^thermometer/bind$', thermometer_views.thermometer_bind, name='thermometer_bind'),
23 23
     re_path(r'^thermometer/list$', thermometer_views.thermometer_list, name='thermometer_list'),
24 24
 ]
25
+
26
+urlpatterns += [
27
+    re_path(r'^temperature/upload$', temperature_views.temperature_upload, name='temperature_upload'),
28
+    re_path(r'^temperature/list$', temperature_views.temperature_list, name='temperature_list'),
29
+]

+ 0 - 0
temperature/__init__.py


+ 12 - 0
temperature/admin.py

@@ -0,0 +1,12 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from django.contrib import admin
4
+
5
+from temperature.models import TemperatureInfo
6
+
7
+
8
+class TemperatureInfoAdmin(admin.ModelAdmin):
9
+    list_display = ('thermometer_id', 'user_id', 'macid', 'temperature', 'status', 'created_at', 'updated_at')
10
+
11
+
12
+admin.site.register(TemperatureInfo, TemperatureInfoAdmin)

+ 5 - 0
temperature/apps.py

@@ -0,0 +1,5 @@
1
+from django.apps import AppConfig
2
+
3
+
4
+class AccountConfig(AppConfig):
5
+    name = 'temperature'

+ 31 - 0
temperature/migrations/0001_initial.py

@@ -0,0 +1,31 @@
1
+# Generated by Django 3.2.14 on 2022-07-05 15:04
2
+
3
+from django.db import migrations, models
4
+import shortuuidfield.fields
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    initial = True
10
+
11
+    dependencies = [
12
+    ]
13
+
14
+    operations = [
15
+        migrations.CreateModel(
16
+            name='ThermometerInfo',
17
+            fields=[
18
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19
+                ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
20
+                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
21
+                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
22
+                ('thermometer_id', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='体温计唯一标识', max_length=22, null=True, unique=True)),
23
+                ('user_id', models.CharField(blank=True, db_index=True, help_text='用户唯一标识', max_length=32, verbose_name='user_id')),
24
+                ('macid', models.CharField(blank=True, help_text='设备号', max_length=32, null=True, verbose_name='macid')),
25
+            ],
26
+            options={
27
+                'verbose_name': '体温计信息',
28
+                'verbose_name_plural': '体温计信息',
29
+            },
30
+        ),
31
+    ]

+ 33 - 0
temperature/migrations/0002_auto_20220705_2335.py

@@ -0,0 +1,33 @@
1
+# Generated by Django 3.2.14 on 2022-07-05 15:35
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('temperature', '0001_initial'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.CreateModel(
14
+            name='TemperatureInfo',
15
+            fields=[
16
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
17
+                ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
18
+                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
19
+                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
20
+                ('thermometer_id', models.CharField(blank=True, db_index=True, help_text='体温计唯一标识', max_length=32, verbose_name='thermometer_id')),
21
+                ('user_id', models.CharField(blank=True, db_index=True, help_text='用户唯一标识', max_length=32, verbose_name='user_id')),
22
+                ('macid', models.CharField(blank=True, help_text='设备号', max_length=32, null=True, verbose_name='macid')),
23
+                ('temperature', models.FloatField(default=0, help_text='用户体温', verbose_name='temperature')),
24
+            ],
25
+            options={
26
+                'verbose_name': '体温信息',
27
+                'verbose_name_plural': '体温信息',
28
+            },
29
+        ),
30
+        migrations.DeleteModel(
31
+            name='ThermometerInfo',
32
+        ),
33
+    ]

+ 0 - 0
temperature/migrations/__init__.py


+ 28 - 0
temperature/models.py

@@ -0,0 +1,28 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from django.db import models
4
+from django.utils.translation import gettext_lazy as _
5
+from django_models_ext import BaseModelMixin
6
+
7
+
8
+class TemperatureInfo(BaseModelMixin):
9
+    thermometer_id = models.CharField(_('thermometer_id'), max_length=32, blank=True, help_text='体温计唯一标识', db_index=True)
10
+    user_id = models.CharField(_('user_id'), max_length=32, blank=True, help_text='用户唯一标识', db_index=True)
11
+    macid = models.CharField(_('macid'), max_length=32, blank=True, null=True, help_text='设备号')
12
+    temperature = models.FloatField(_('temperature'), default=0, help_text='用户体温')
13
+
14
+    class Meta:
15
+        verbose_name = _('体温信息')
16
+        verbose_name_plural = _('体温信息')
17
+
18
+    def __unicode__(self):
19
+        return self.pk
20
+
21
+    @property
22
+    def data(self):
23
+        return {
24
+            'thermometer_id': self.thermometer_id,
25
+            'user_id': self.user_id,
26
+            'macid': self.macid,
27
+            'temperature': self.temperature,
28
+        }

+ 4 - 0
temperature/tests.py

@@ -0,0 +1,4 @@
1
+from django.test import TestCase
2
+
3
+
4
+# Create your tests here.

+ 4 - 0
temperature/views.py

@@ -0,0 +1,4 @@
1
+from django.shortcuts import render
2
+
3
+
4
+# Create your views here.

+ 1 - 1
thermometer/models.py

@@ -2,7 +2,7 @@
2 2
 
3 3
 from django.db import models
4 4
 from django.utils.translation import gettext_lazy as _
5
-from django_models_ext import BaseModelMixin, SexModelMixin
5
+from django_models_ext import BaseModelMixin
6 6
 from shortuuidfield import ShortUUIDField
7 7
 
8 8
 

+ 1 - 0
tiwen/settings.py

@@ -58,6 +58,7 @@ INSTALLED_APPS = [
58 58
     'api',
59 59
     'account',
60 60
     'thermometer',
61
+    'temperature',
61 62
 ]
62 63
 
63 64
 MIDDLEWARE = [