Amend Data serializer to provide nested demodulated payloads
parent
28f1d29859
commit
7f93fd0300
|
@ -1,14 +1,39 @@
|
|||
from rest_framework import serializers
|
||||
from django.contrib.sites.models import Site
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from network.base.models import Data, Station
|
||||
from network.base.models import Data, Station, DemodData
|
||||
|
||||
|
||||
class DemodDataSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = DemodData
|
||||
fields = ('payload_demod', )
|
||||
|
||||
|
||||
class DataSerializer(serializers.ModelSerializer):
|
||||
transmitter = serializers.SerializerMethodField()
|
||||
demoddata = DemodDataSerializer(many=True)
|
||||
|
||||
class Meta:
|
||||
model = Data
|
||||
fields = ('id', 'start', 'end', 'observation', 'ground_station', 'payload', 'payload_demode')
|
||||
fields = ('id', 'start', 'end', 'observation', 'ground_station', 'transmitter',
|
||||
'payload', 'demoddata')
|
||||
read_only_fields = ['id', 'start', 'end', 'observation', 'ground_station']
|
||||
|
||||
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 ''
|
||||
|
||||
|
||||
class JobSerializer(serializers.ModelSerializer):
|
||||
frequency = serializers.SerializerMethodField()
|
||||
|
|
|
@ -13,6 +13,8 @@ from network.base.models import Data, Station
|
|||
class DataView(viewsets.ModelViewSet, mixins.UpdateModelMixin):
|
||||
queryset = Data.objects.all()
|
||||
serializer_class = serializers.DataSerializer
|
||||
filter_class = filters.DataViewFilter
|
||||
filter_fields = ('ground_station', 'start', 'end')
|
||||
permission_classes = [
|
||||
StationOwnerCanEditPermission
|
||||
]
|
||||
|
|
|
@ -27,4 +27,4 @@ git+https://github.com/comzeradd/orbit.git@cache##egg=orbit
|
|||
# API
|
||||
djangorestframework==3.3.3
|
||||
Markdown==2.6.6
|
||||
git+https://github.com/alex/django-filter.git@0.12.0#egg=django-filter
|
||||
django-filter.git==0.13.0
|
||||
|
|
|
@ -5,4 +5,4 @@
|
|||
django-debug-toolbar==1.4
|
||||
sqlparse==0.1.19
|
||||
flake8==2.5.4
|
||||
factory-boy==2.6.1
|
||||
factory-boy==2.7.0
|
||||
|
|
Loading…
Reference in New Issue