1
0
Fork 0
satnogs-network/network/api/views.py

63 lines
2.4 KiB
Python
Raw Normal View History

2017-08-12 09:25:53 -06:00
from django.shortcuts import get_object_or_404
from django.utils.timezone import now
2015-02-14 14:47:31 -07:00
2017-08-12 09:25:53 -06:00
from rest_framework import viewsets, mixins, status
from rest_framework.response import Response
2014-10-15 13:20:46 -06:00
2015-06-21 18:44:25 -06:00
from network.api.perms import StationOwnerCanEditPermission
from network.api import serializers, filters, pagination
2018-12-02 07:44:00 -07:00
from network.base.models import Observation, Station, Transmitter
2014-10-15 13:20:46 -06:00
class ObservationView(viewsets.ModelViewSet, mixins.UpdateModelMixin):
queryset = Observation.objects.all()
serializer_class = serializers.ObservationSerializer
filter_class = filters.ObservationViewFilter
2014-12-13 10:49:15 -07:00
permission_classes = [
StationOwnerCanEditPermission
]
pagination_class = pagination.LinkedHeaderPageNumberPagination
2015-02-14 07:15:26 -07:00
2017-08-12 09:25:53 -06:00
def update(self, request, *args, **kwargs):
if request.data.get('client_version'):
instance = self.get_object()
instance.ground_station.client_version = request.data.get('client_version')
instance.ground_station.save()
2017-08-12 09:25:53 -06:00
if request.data.get('demoddata'):
instance = self.get_object()
instance.demoddata.create(payload_demod=request.data.get('demoddata'))
super(ObservationView, self).update(request, *args, **kwargs)
2017-08-12 09:25:53 -06:00
return Response(status=status.HTTP_200_OK)
2015-02-14 12:58:11 -07:00
2018-04-01 05:52:20 -06:00
class StationView(viewsets.ModelViewSet, mixins.UpdateModelMixin):
queryset = Station.objects.all()
serializer_class = serializers.StationSerializer
2018-12-01 12:39:18 -07:00
filter_class = filters.StationViewFilter
2018-04-01 05:52:20 -06:00
pagination_class = pagination.LinkedHeaderPageNumberPagination
2018-12-02 07:44:00 -07:00
class TransmitterView(viewsets.ModelViewSet, mixins.UpdateModelMixin):
queryset = Transmitter.objects.all().order_by('uuid')
serializer_class = serializers.TransmitterSerializer
filter_class = filters.TransmitterViewFilter
pagination_class = pagination.LinkedHeaderPageNumberPagination
2015-02-14 12:58:11 -07:00
class JobView(viewsets.ReadOnlyModelViewSet):
queryset = Observation.objects.filter(payload='')
2015-02-14 12:58:11 -07:00
serializer_class = serializers.JobSerializer
filter_class = filters.ObservationViewFilter
2015-02-14 12:58:11 -07:00
filter_fields = ('ground_station')
2015-02-14 14:47:31 -07:00
def get_queryset(self):
2015-06-21 18:44:25 -06:00
queryset = self.queryset.filter(start__gte=now())
2016-01-22 10:47:27 -07:00
gs_id = self.request.query_params.get('ground_station', None)
2015-06-21 18:44:25 -06:00
if gs_id and self.request.user.is_authenticated():
gs = get_object_or_404(Station, id=gs_id)
if gs.owner == self.request.user:
gs.last_seen = now()
gs.save()
return queryset