2017-03-02 10:55:10 -07:00
|
|
|
from rest_framework import viewsets, mixins, status
|
|
|
|
from rest_framework.parsers import FormParser, FileUploadParser
|
|
|
|
from rest_framework.permissions import AllowAny
|
|
|
|
from rest_framework.response import Response
|
|
|
|
|
|
|
|
from django.core.files.base import ContentFile
|
2015-04-22 05:05:30 -06:00
|
|
|
|
2015-07-17 12:19:11 -06:00
|
|
|
from db.api import serializers, filters
|
2016-05-08 09:44:22 -06:00
|
|
|
from db.base.models import Mode, Satellite, Transmitter, DemodData
|
2015-04-22 05:05:30 -06:00
|
|
|
|
|
|
|
|
2015-08-13 06:57:04 -06:00
|
|
|
class ModeView(viewsets.ReadOnlyModelViewSet):
|
|
|
|
queryset = Mode.objects.all()
|
|
|
|
serializer_class = serializers.ModeSerializer
|
|
|
|
|
|
|
|
|
|
|
|
class SatelliteView(viewsets.ReadOnlyModelViewSet):
|
2015-05-03 15:23:07 -06:00
|
|
|
queryset = Satellite.objects.all()
|
|
|
|
serializer_class = serializers.SatelliteSerializer
|
2015-07-20 12:20:52 -06:00
|
|
|
lookup_field = 'norad_cat_id'
|
2015-05-03 15:23:07 -06:00
|
|
|
|
|
|
|
|
2015-08-13 06:57:04 -06:00
|
|
|
class TransmitterView(viewsets.ReadOnlyModelViewSet):
|
2015-07-23 06:48:58 -06:00
|
|
|
queryset = Transmitter.objects.all()
|
|
|
|
serializer_class = serializers.TransmitterSerializer
|
|
|
|
filter_class = filters.TransmitterViewFilter
|
2015-07-20 12:20:52 -06:00
|
|
|
lookup_field = 'uuid'
|
2016-05-08 09:44:22 -06:00
|
|
|
|
|
|
|
|
2017-03-02 10:55:10 -07:00
|
|
|
class TelemetryView(viewsets.ModelViewSet, mixins.CreateModelMixin):
|
2016-05-08 09:44:22 -06:00
|
|
|
queryset = DemodData.objects.all()
|
|
|
|
serializer_class = serializers.TelemetrySerializer
|
|
|
|
filter_class = filters.TelemetryViewFilter
|
2017-03-02 10:55:10 -07:00
|
|
|
permission_classes = (AllowAny, )
|
|
|
|
parser_classes = (FormParser, FileUploadParser)
|
|
|
|
|
|
|
|
def create(self, request, *args, **kwargs):
|
|
|
|
data = {}
|
|
|
|
|
|
|
|
data['satellite'] = Satellite.objects.get(norad_cat_id=request.data.get('noradID')).id
|
|
|
|
data['station'] = request.data.get('source')
|
|
|
|
timestamp = request.data.get('timestamp')
|
|
|
|
# datetime.strptime(p, '%Y%m%dT%H%M%SZ')
|
|
|
|
data['timestamp'] = timestamp
|
|
|
|
|
|
|
|
# Convert coordinates to omit N-S and W-E designators
|
|
|
|
lat = request.data.get('latitude')
|
|
|
|
lng = request.data.get('longitude')
|
|
|
|
data['lat'] = (-float(lat[:-1]) if ('W' in lat) else float(lat[:-1]))
|
|
|
|
data['lng'] = (-float(lng[:-1]) if ('S' in lng) else float(lng[:-1]))
|
|
|
|
|
|
|
|
# Create file out of frame string
|
|
|
|
frame = ContentFile(request.data.get('frame'), name='sids')
|
|
|
|
data['payload_frame'] = frame
|
|
|
|
|
|
|
|
serializer = serializers.SidsSerializer(data=data)
|
|
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
self.perform_create(serializer)
|
|
|
|
headers = self.get_success_headers(serializer.data)
|
2017-03-25 08:58:28 -06:00
|
|
|
return Response(status=status.HTTP_201_CREATED, headers=headers)
|