Skip to content

Commit 3ebbce1

Browse files
committed
/v1/now endpoint added
1 parent 6b0a1d2 commit 3ebbce1

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

feinstaub/sensors/serializers.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,3 +131,33 @@ class VerboseSensorDataSerializer(serializers.ModelSerializer):
131131
class Meta:
132132
model = SensorData
133133
fields = ('id', 'sampling_rate', 'timestamp', 'sensordatavalues', 'location', 'sensor', 'software_version')
134+
135+
136+
# ##################################################
137+
138+
139+
class NowSensorSerializer(serializers.ModelSerializer):
140+
sensor_type = NestedSensorTypeSerializer()
141+
142+
class Meta:
143+
model = Sensor
144+
fields = ('id', 'pin', 'sensor_type')
145+
146+
147+
class NowSensorLocationSerializer(serializers.ModelSerializer):
148+
latitude = serializers.DecimalField(max_digits=6, decimal_places=3)
149+
longitude = serializers.DecimalField(max_digits=6, decimal_places=3)
150+
151+
class Meta:
152+
model = SensorLocation
153+
fields = ('id', 'latitude', 'longitude')
154+
155+
156+
class NowSerializer(serializers.ModelSerializer):
157+
location = NowSensorLocationSerializer()
158+
sensor = NowSensorSerializer()
159+
sensordatavalues = NestedSensorDataValueSerializer(many=True)
160+
161+
class Meta:
162+
model = SensorData
163+
fields = ('id', 'sampling_rate', 'timestamp', 'sensordatavalues', 'location', 'sensor')

feinstaub/sensors/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
SensorDataView,
88
SensorView,
99
StatisticsView,
10+
NowView,
1011
)
1112
from main.views import UsersView
1213

@@ -17,6 +18,7 @@
1718
router.register(r'data', SensorDataView)
1819
router.register(r'statistics', StatisticsView, base_name='statistics')
1920
router.register(r'user', UsersView)
21+
router.register(r'now', NowView)
2022

2123

2224
urlpatterns = patterns(

feinstaub/sensors/views.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
import datetime
12
import django_filters
23
from django.contrib.auth.models import User
34
from django.db.models import Q
5+
from django.utils import timezone
46

57
from rest_framework import mixins, viewsets, filters, pagination
68
from rest_framework.response import Response
@@ -11,6 +13,7 @@
1113
NodeSerializer,
1214
SensorSerializer,
1315
VerboseSensorDataSerializer,
16+
NowSerializer,
1417
)
1518

1619
from .models import (
@@ -105,6 +108,20 @@ def get_queryset(self):
105108
return Node.objects.none()
106109

107110

111+
class NowView(mixins.ListModelMixin, viewsets.GenericViewSet):
112+
""" Show all sensors active in the last 5 minutes with newest value
113+
"""
114+
permission_classes = []
115+
serializer_class = NowSerializer
116+
queryset = SensorData.objects.none()
117+
118+
def get_queryset(self):
119+
# now = timezone.now()
120+
now = datetime.datetime(2016, 1, 1, 1, 1)
121+
startdate = now - datetime.timedelta(minutes=5)
122+
return SensorData.objects.filter(modified__range=[startdate, now])
123+
124+
108125
class StatisticsView(viewsets.ViewSet):
109126

110127
def list(self, request):

0 commit comments

Comments
 (0)