Skip to content

Commit 91db3e5

Browse files
committed
Resolve #56
1 parent 28513cf commit 91db3e5

File tree

1 file changed

+29
-12
lines changed

1 file changed

+29
-12
lines changed

resources/Map.py

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,44 @@
11
from datetime import datetime, timedelta
22
from os import environ
33

4-
from common.convert_types_to_names import convert_types_to_names
54
from flask_restful import Resource
6-
from models import AreaModel
5+
from models import AreaModel, SensorModel, SensorDataModel
76
from sqlalchemy import desc
87

98

109
class Map(Resource):
1110
def get(self):
12-
maxdate = datetime.now() - timedelta(hours=int(environ.get('MAX_RECORD_HOURS')))
11+
latest_records = self._get_latest_records()
12+
aqi_records = []
1313

14-
areas = AreaModel.query.order_by(desc(AreaModel.created)).filter(
15-
AreaModel.created >= maxdate).all()
14+
for record in latest_records:
15+
aqi_record = AreaModel.query \
16+
.order_by(
17+
AreaModel.created.desc()
18+
).filter_by(
19+
latitude=record.latitude
20+
).filter_by(
21+
longitude=record.longitude
22+
).first()
1623

17-
areas_coords = []
18-
areas_list = []
24+
if aqi_record:
25+
aqi_records.append(aqi_record.as_dict())
1926

20-
for area in areas:
21-
if (area.latitude, area.longitude) in areas_coords:
27+
return aqi_records
28+
29+
def _get_latest_records(self):
30+
sensors = SensorModel.query.all()
31+
32+
latest_records = []
33+
for sensor in sensors:
34+
record = SensorDataModel.query.order_by(SensorDataModel.recorded.desc()).filter_by(
35+
internal_id=sensor.external_id).first()
36+
37+
if not record:
2238
continue
2339

24-
areas_coords.append((area.latitude, area.longitude))
25-
areas_list.append(convert_types_to_names(area))
40+
timedelta = datetime.now() - record.recorded
41+
if (timedelta.seconds // 3600) <= int(environ.get('MAX_RECORD_HOURS')):
42+
latest_records.append(record)
2643

27-
return areas_list
44+
return latest_records

0 commit comments

Comments
 (0)