1
0
Fork 0

Amend Data serializer to provide nested demodulated payloads

merge-requests/248/head
Nikos Roussos 2016-04-25 17:54:38 +03:00
parent 28f1d29859
commit 7f93fd0300
4 changed files with 31 additions and 4 deletions

View File

@ -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()

View File

@ -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
]

View File

@ -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

View File

@ -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