Skip to content

Commit 8fd4bc7

Browse files
authored
Merge branch 'dev' into mapBat
2 parents 77a864b + c713b54 commit 8fd4bc7

38 files changed

+1480
-308
lines changed

backend/API/app/apps.py

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from django.apps import AppConfig
22

33
class AppConfig(AppConfig):
4-
default_auto_field = 'django.db.models.BigAutoField'
54
name = 'app'

backend/API/app/models/data.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
from django.db import models
2+
from django.core.validators import MinValueValidator, MaxValueValidator
23
from timescale.db.models.models import TimescaleModel
34

45
class Data(TimescaleModel):
5-
6-
temperature = models.FloatField(default=0.0)
7-
humidity = models.FloatField(default=0.0)
8-
activity = models.FloatField(default=0.0)
9-
co2 = models.FloatField(default=0.0)
10-
tvoc = models.FloatField(default=0.0)
11-
illuminance = models.FloatField(default=0.0)
12-
infrared = models.FloatField(default=0.0)
13-
infrared_and_visible = models.FloatField(default=0.0)
14-
pressure = models.FloatField(default=0.0)
6+
temperature = models.FloatField(default=0.0, validators=[MinValueValidator(-20), MaxValueValidator(70)])
7+
humidity = models.FloatField(default=0.0, validators=[MinValueValidator(0), MaxValueValidator(100)])
8+
activity = models.FloatField(default=0.0, validators=[MinValueValidator(0), MaxValueValidator(65535)])
9+
co2 = models.FloatField(default=0.0, validators=[MinValueValidator(400), MaxValueValidator(5000)])
10+
tvoc = models.FloatField(default=0.0, validators=[MinValueValidator(0), MaxValueValidator(60000)])
11+
illuminance = models.FloatField(default=0.0, validators=[MinValueValidator(0), MaxValueValidator(60000)])
12+
infrared = models.FloatField(default=0.0, validators=[MinValueValidator(0), MaxValueValidator(60000)])
13+
infrared_and_visible = models.FloatField(default=0.0, validators=[MinValueValidator(0), MaxValueValidator(60000)])
14+
pressure = models.FloatField(default=0.0, validators=[MinValueValidator(300), MaxValueValidator(1100)])
1515

1616
sensor = models.ForeignKey('Sensor', on_delete=models.CASCADE, related_name='all_data')

backend/API/app/models/sensor.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
class Sensor(models.Model) :
44

5-
deveui = models.CharField(max_length=100, primary_key=True)
5+
deveui = models.TextField(max_length=100, primary_key=True)
66
devicename = models.CharField(max_length=100, blank=True, null=True)
77
room = models.CharField(max_length=100, blank=True, null=True)
88
building = models.CharField(max_length=20, blank=True, null=True)

backend/API/app/serializers/byroomserializer.py

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from django.db.models import Prefetch
2-
from app.usecases import data_date_sort
32
from deepserializer import DeepSerializer
43
from app.models import Sensor, Data
54
from rest_framework import serializers

backend/API/app/tests.py

-32
This file was deleted.

backend/API/app/tests/__init__.py

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from .test_byroom import ByRoomTestCase
2+
from .test_byroomsort import ByRoomSortTestCase
3+
from .test_createsensordata import CreateSensorDataTestCase
4+
from .test_data import DataTestCase
5+
from .test_datasort import DataSortTestCase
6+
from .test_depth import DepthTestCase
7+
from .test_sensor import SensorTestCase

backend/API/app/tests/test_byroom.py

+122
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
import pytz
2+
from datetime import datetime
3+
4+
from django.test import TestCase
5+
from app.models import Sensor, Data
6+
7+
class ByRoomTestCase(TestCase):
8+
def setUp(self):
9+
self.sensor_1 = Sensor.objects.create(
10+
deveui="24e124128c019417",
11+
devicename="AM107-33",
12+
room="E103",
13+
building="E",
14+
floor=1,
15+
batterylevel=60,
16+
externalpowersource=False
17+
)
18+
19+
self.sensor_2 = Sensor.objects.create(
20+
deveui="24e124128c019416",
21+
devicename="AM107-33",
22+
room="E102",
23+
building="E",
24+
floor=1,
25+
batterylevel=11.7,
26+
externalpowersource=True
27+
)
28+
29+
timezone = pytz.timezone('Europe/Paris')
30+
self.local_time_1 = datetime.now(timezone).isoformat()
31+
32+
self.data_1 = Data.objects.create(
33+
time=self.local_time_1,
34+
temperature=23.5,
35+
humidity=45.3,
36+
activity=0,
37+
co2=500,
38+
tvoc=10000,
39+
illuminance=20000,
40+
infrared=30000,
41+
infrared_and_visible=40000,
42+
pressure=1013.25,
43+
sensor=Sensor.objects.get(deveui=self.sensor_1.deveui)
44+
)
45+
46+
self.local_time_2 = datetime.now(timezone).isoformat()
47+
48+
self.data_2 = Data.objects.create(
49+
time=self.local_time_2,
50+
temperature=23.5,
51+
humidity=45.3,
52+
activity=0,
53+
co2=500,
54+
tvoc=10000,
55+
illuminance=20000,
56+
infrared=30000,
57+
infrared_and_visible=40000,
58+
pressure=1013.25,
59+
sensor=Sensor.objects.get(deveui=self.sensor_2.deveui)
60+
)
61+
62+
self.local_time_1 = str(self.local_time_1).split('+')[0]
63+
self.local_time_2 = str(self.local_time_2).split('+')[0]
64+
65+
def test_endpoint_byroom(self):
66+
response = self.client.get('/ByRoom/')
67+
68+
expected = [
69+
{
70+
"room": self.sensor_1.room,
71+
"all_data": [
72+
self.data_1.id
73+
],
74+
"sensor": self.sensor_1.deveui,
75+
"building": self.sensor_1.building,
76+
"floor": self.sensor_1.floor
77+
},
78+
{
79+
"room": self.sensor_2.room,
80+
"all_data": [
81+
self.data_2.id
82+
],
83+
"sensor": self.sensor_2.deveui,
84+
"building": self.sensor_2.building,
85+
"floor": self.sensor_2.floor
86+
}
87+
]
88+
89+
self.assertEqual(response.status_code, 200)
90+
self.assertEqual(response.json(), expected)
91+
92+
def test_endpoint_byroom_by_room_1(self):
93+
response = self.client.get(f'/ByRoom/{self.sensor_1.room}/')
94+
95+
expected = {
96+
"room": self.sensor_1.room,
97+
"all_data": [
98+
self.data_1.id
99+
],
100+
"sensor": self.sensor_1.deveui,
101+
"building": self.sensor_1.building,
102+
"floor": self.sensor_1.floor
103+
}
104+
105+
self.assertEqual(response.status_code, 200)
106+
self.assertEqual(response.json(), expected)
107+
108+
def test_endpoint_byroom_by_room_2(self):
109+
response = self.client.get(f'/ByRoom/{self.sensor_2.room}/')
110+
111+
expected = {
112+
"room": self.sensor_2.room,
113+
"all_data": [
114+
self.data_2.id
115+
],
116+
"sensor": self.sensor_2.deveui,
117+
"building": self.sensor_2.building,
118+
"floor": self.sensor_2.floor
119+
}
120+
121+
self.assertEqual(response.status_code, 200)
122+
self.assertEqual(response.json(), expected)
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.test import TestCase
2+
from app.models import Sensor, Data
3+
4+
class ByRoomSortTestCase(TestCase):
5+
def setUp(self):
6+
pass

0 commit comments

Comments
 (0)