2014-10-15 13:20:46 -06:00
|
|
|
from rest_framework import serializers
|
|
|
|
|
2016-04-25 08:54:38 -06:00
|
|
|
from network.base.models import Data, Station, DemodData
|
|
|
|
|
|
|
|
|
|
|
|
class DemodDataSerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
|
|
model = DemodData
|
|
|
|
fields = ('payload_demod', )
|
2014-10-15 13:20:46 -06:00
|
|
|
|
|
|
|
|
|
|
|
class DataSerializer(serializers.ModelSerializer):
|
2016-04-25 08:54:38 -06:00
|
|
|
transmitter = serializers.SerializerMethodField()
|
|
|
|
demoddata = DemodDataSerializer(many=True)
|
|
|
|
|
2014-10-15 13:20:46 -06:00
|
|
|
class Meta:
|
|
|
|
model = Data
|
2016-04-25 08:54:38 -06:00
|
|
|
fields = ('id', 'start', 'end', 'observation', 'ground_station', 'transmitter',
|
|
|
|
'payload', 'demoddata')
|
2015-05-06 02:55:54 -06:00
|
|
|
read_only_fields = ['id', 'start', 'end', 'observation', 'ground_station']
|
2015-02-14 12:58:11 -07:00
|
|
|
|
2016-04-25 08:54:38 -06:00
|
|
|
def update(self, instance, validated_data):
|
|
|
|
demod_data = validated_data.pop('demoddata')
|
|
|
|
data = super(DataSerializer, self).update(instance, validated_data)
|
|
|
|
for demod in demod_data:
|
|
|
|
data.demoddata.create(payload_demod=demod['payload_demod'])
|
|
|
|
return data
|
|
|
|
|
|
|
|
def get_transmitter(self, obj):
|
|
|
|
try:
|
|
|
|
return obj.observation.transmitter.uuid
|
|
|
|
except AttributeError:
|
|
|
|
return ''
|
|
|
|
|
2015-02-14 12:58:11 -07:00
|
|
|
|
|
|
|
class JobSerializer(serializers.ModelSerializer):
|
|
|
|
frequency = serializers.SerializerMethodField()
|
|
|
|
tle0 = serializers.SerializerMethodField()
|
|
|
|
tle1 = serializers.SerializerMethodField()
|
|
|
|
tle2 = serializers.SerializerMethodField()
|
2016-04-05 11:57:46 -06:00
|
|
|
mode = serializers.SerializerMethodField()
|
2015-02-14 12:58:11 -07:00
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = Data
|
|
|
|
fields = ('id', 'start', 'end', 'ground_station', 'tle0', 'tle1', 'tle2',
|
2016-04-05 11:57:46 -06:00
|
|
|
'frequency', 'mode')
|
2015-02-14 12:58:11 -07:00
|
|
|
|
|
|
|
def get_frequency(self, obj):
|
2015-07-23 09:18:01 -06:00
|
|
|
return obj.observation.transmitter.downlink_low
|
2015-02-14 12:58:11 -07:00
|
|
|
|
|
|
|
def get_tle0(self, obj):
|
2016-01-26 06:52:33 -07:00
|
|
|
return obj.observation.tle.tle0
|
2015-02-14 12:58:11 -07:00
|
|
|
|
|
|
|
def get_tle1(self, obj):
|
2016-01-26 06:52:33 -07:00
|
|
|
return obj.observation.tle.tle1
|
2015-02-14 12:58:11 -07:00
|
|
|
|
|
|
|
def get_tle2(self, obj):
|
2016-01-26 06:52:33 -07:00
|
|
|
return obj.observation.tle.tle2
|
2015-09-09 02:12:36 -06:00
|
|
|
|
2016-04-05 11:57:46 -06:00
|
|
|
def get_mode(self, obj):
|
2016-04-12 03:56:09 -06:00
|
|
|
try:
|
|
|
|
return obj.observation.transmitter.mode.name
|
|
|
|
except:
|
|
|
|
return ''
|
2016-04-05 11:57:46 -06:00
|
|
|
|
2015-09-09 02:12:36 -06:00
|
|
|
|
|
|
|
class SettingsSerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
|
|
model = Station
|
|
|
|
fields = ('uuid', 'name', 'alt', 'lat', 'lng', 'rig',
|
|
|
|
'active', 'antenna', 'id', 'apikey')
|
|
|
|
|
|
|
|
apikey = serializers.CharField(read_only=True)
|