@@ -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 |
+ }) |
@@ -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 |
|
@@ -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 +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) |
@@ -0,0 +1,5 @@ |
||
| 1 |
+from django.apps import AppConfig |
|
| 2 |
+ |
|
| 3 |
+ |
|
| 4 |
+class AccountConfig(AppConfig): |
|
| 5 |
+ name = 'temperature' |
@@ -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 |
+ ] |
@@ -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 +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 |
+ } |
@@ -0,0 +1,4 @@ |
||
| 1 |
+from django.test import TestCase |
|
| 2 |
+ |
|
| 3 |
+ |
|
| 4 |
+# Create your tests here. |
@@ -0,0 +1,4 @@ |
||
| 1 |
+from django.shortcuts import render |
|
| 2 |
+ |
|
| 3 |
+ |
|
| 4 |
+# Create your views here. |
@@ -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 |
|
@@ -58,6 +58,7 @@ INSTALLED_APPS = [ |
||
| 58 | 58 |
'api', |
| 59 | 59 |
'account', |
| 60 | 60 |
'thermometer', |
| 61 |
+ 'temperature', |
|
| 61 | 62 |
] |
| 62 | 63 |
|
| 63 | 64 |
MIDDLEWARE = [ |