Skip to content

Commit

Permalink
/v1/now endpoint added
Browse files Browse the repository at this point in the history
  • Loading branch information
mfa committed Apr 23, 2016
1 parent 6b0a1d2 commit 3ebbce1
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 0 deletions.
30 changes: 30 additions & 0 deletions feinstaub/sensors/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,33 @@ class VerboseSensorDataSerializer(serializers.ModelSerializer):
class Meta:
model = SensorData
fields = ('id', 'sampling_rate', 'timestamp', 'sensordatavalues', 'location', 'sensor', 'software_version')


# ##################################################


class NowSensorSerializer(serializers.ModelSerializer):
sensor_type = NestedSensorTypeSerializer()

class Meta:
model = Sensor
fields = ('id', 'pin', 'sensor_type')


class NowSensorLocationSerializer(serializers.ModelSerializer):
latitude = serializers.DecimalField(max_digits=6, decimal_places=3)
longitude = serializers.DecimalField(max_digits=6, decimal_places=3)

class Meta:
model = SensorLocation
fields = ('id', 'latitude', 'longitude')


class NowSerializer(serializers.ModelSerializer):
location = NowSensorLocationSerializer()
sensor = NowSensorSerializer()
sensordatavalues = NestedSensorDataValueSerializer(many=True)

class Meta:
model = SensorData
fields = ('id', 'sampling_rate', 'timestamp', 'sensordatavalues', 'location', 'sensor')
2 changes: 2 additions & 0 deletions feinstaub/sensors/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
SensorDataView,
SensorView,
StatisticsView,
NowView,
)
from main.views import UsersView

Expand All @@ -17,6 +18,7 @@
router.register(r'data', SensorDataView)
router.register(r'statistics', StatisticsView, base_name='statistics')
router.register(r'user', UsersView)
router.register(r'now', NowView)


urlpatterns = patterns(
Expand Down
17 changes: 17 additions & 0 deletions feinstaub/sensors/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import datetime
import django_filters
from django.contrib.auth.models import User
from django.db.models import Q
from django.utils import timezone

from rest_framework import mixins, viewsets, filters, pagination
from rest_framework.response import Response
Expand All @@ -11,6 +13,7 @@
NodeSerializer,
SensorSerializer,
VerboseSensorDataSerializer,
NowSerializer,
)

from .models import (
Expand Down Expand Up @@ -105,6 +108,20 @@ def get_queryset(self):
return Node.objects.none()


class NowView(mixins.ListModelMixin, viewsets.GenericViewSet):
""" Show all sensors active in the last 5 minutes with newest value
"""
permission_classes = []
serializer_class = NowSerializer
queryset = SensorData.objects.none()

def get_queryset(self):
# now = timezone.now()
now = datetime.datetime(2016, 1, 1, 1, 1)
startdate = now - datetime.timedelta(minutes=5)
return SensorData.objects.filter(modified__range=[startdate, now])


class StatisticsView(viewsets.ViewSet):

def list(self, request):
Expand Down

0 comments on commit 3ebbce1

Please sign in to comment.