1
0
mirror of https://github.com/daniviga/bite.git synced 2024-11-27 07:16:12 +01:00
bite/freedcs/telemetry/views.py

50 lines
1.6 KiB
Python

from datetime import datetime
from django.http import Http404
from rest_framework.viewsets import ModelViewSet
from telemetry.models import Telemetry
from telemetry.serializers import TelemetrySerializer
from rest_framework.response import Response
class TelemetryView(ModelViewSet):
queryset = Telemetry.objects.all()
serializer_class = TelemetrySerializer
lookup_field = 'device'
def list(self, request, device=None):
queryset = Telemetry.objects.filter(device__serial=device)
if not queryset:
raise Http404
serializer = TelemetrySerializer(queryset, many=True)
return Response(serializer.data)
class TelemetryRange(ModelViewSet):
queryset = Telemetry.objects.all()
serializer_class = TelemetrySerializer
lookup_field = 'device'
def list(self, request, device, time_from, time_to=None):
queryset = Telemetry.objects.filter(
device__serial=device,
time__range=[time_from, datetime.now()])
if not queryset:
raise Http404
serializer = TelemetrySerializer(queryset, many=True)
return Response(serializer.data)
class TelemetryLatest(ModelViewSet):
queryset = Telemetry.objects.all()
serializer_class = TelemetrySerializer
lookup_field = 'device'
def retrieve(self, request, device=None):
queryset = Telemetry.objects.filter(
device__serial=device).order_by('-time')[0]
if not queryset:
raise Http404
serializer = TelemetrySerializer(queryset)
return Response(serializer.data)