123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- from django.contrib.auth.models import Group, User
- from . import models
- from rest_framework import serializers
- from drf_writable_nested import WritableNestedModelSerializer
- class UserSerializer(serializers.HyperlinkedModelSerializer):
- class Meta:
- model = User
- fields = ['url', 'username', 'email', 'groups']
- class device_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- class Meta:
- model = models.device
- fields = ['id', 'device_type', 'brend', 'serial_model', 'proto', 'proto_interface']
- class adc_params_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- device_model = serializers.CharField(max_length=100, write_only=True)
- device = device_Serializer(read_only=True)
- class Meta:
- model = models.adc_params
- fields = ['device_model', 'device', 'srate', 'points', 'n_channels', 'channel_ranges', 'n_triggers', 'averaging', 'trigger_channel', 'trig_direction', 'threshold', 'auto_measure_time', 'enabled']
- extra_kwargs = {
- 'device': {'read_only': True}
- }
- # task: add create() for get device by serial_model
- def create(self, validated_data):
- # get device by serial_model
- device_model = validated_data.pop('device_model')
- device_instance = models.device.objects.get(serial_model=device_model)
- # create adc_params
- adc_params_instance = models.adc_params.objects.create(device=device_instance, **validated_data)
- return adc_params_instance
- class sync_params_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- device_model = serializers.CharField(max_length=100, write_only=True)
- device = device_Serializer(read_only=True)
- class Meta:
- model = models.sync_params
- fields = ['device_model', 'device', 'file', 'port']
- extra_kwargs = {
- 'device': {'read_only': True}
- }
- def create(self, validated_data):
- # get device by serial_model
- device_model = validated_data.pop('device_model')
- device_instance = models.device.objects.get(serial_model=device_model)
- # create sync_params with the device and other fields
- sync_params_instance = models.sync_params.objects.create(device=device_instance, **validated_data)
- return sync_params_instance
- class sdr_params_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- device_model = serializers.CharField(max_length=100, write_only=True)
- device = device_Serializer(read_only=True)
- class Meta:
- model = models.sdr_params
- fields = ['device_model', 'device', 'srate', 'freq', 'ampl', 'gain', 'file']
- extra_kwargs = {
- 'device': {'read_only': True}
- }
- def create(self, validated_data):
- # get device by serial_model
- device_model = validated_data.pop('device_model')
- device_instance = models.device.objects.get(serial_model=device_model)
- # create sdr_params
- sdr_params_instance = models.sdr_params.objects.create(device=device_instance, **validated_data)
- return sdr_params_instance
- class gra_params_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- device_model = serializers.CharField(max_length=100, write_only=True)
- device = device_Serializer(read_only=True)
- class Meta:
- model = models.gra_params
- fields = ['device_model', 'device', 'ip', 'file', 'enabled']
- extra_kwargs = {
- 'device': {'read_only': True}
- }
- def create(self, validated_data):
- # get device by serial_model
- device_model = validated_data.pop('device_model')
- device_instance = models.device.objects.get(serial_model=device_model)
- # create gra_params
- gra_params_instance = models.gra_params.objects.create(device=device_instance, **validated_data)
- return gra_params_instance
- class measurement_info_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- #id = serializers.IntegerField()
- iadc = adc_params_Serializer()
- isync = sync_params_Serializer()
- isdr = sdr_params_Serializer()
- igrax = gra_params_Serializer()
- igray = gra_params_Serializer()
- igraz = gra_params_Serializer()
- class Meta:
- model = models.measurement_info
- fields = ['infostr', 'engine', 'time', 'iadc', 'isync', 'isdr', 'igrax', 'igray', 'igraz']
- class measurement_info_lite_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- class Meta:
- model = models.measurement_info
- fields = ['id', 'infostr', 'time']
- class channel_data_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- channel_data = serializers.CharField(allow_blank=True,
- trim_whitespace=False,
- required=False)
- #id = serializers.IntegerField()
- class Meta:
- model = models.channel_data
- fields = ['channel_num', 'channel_data']
- class device_state_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- class Meta:
- model = models.device_state
- fields = ['status', 'code']
- class state_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- #id = serializers.IntegerField()
- adc = device_state_Serializer()
- sdr = device_state_Serializer()
- sync = device_state_Serializer()
- grax = device_state_Serializer()
- gray = device_state_Serializer()
- graz = device_state_Serializer()
- data_ready = serializers.BooleanField(default=False)
- class Meta:
- model = models.state
- fields = ['adc', 'sync', 'sdr', 'grax', 'gray', 'graz', 'code', 'status', 'data_ready']
- class measurement_data_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- #id = serializers.IntegerField()
- channel_data = channel_data_Serializer(read_only=True, many=True)
- measurement_id = serializers.IntegerField(read_only=True, source="measurement.id")
- measurement_rate = serializers.IntegerField(read_only=True, source="measurement.info.iadc.srate")
- measurement_points = serializers.JSONField(read_only=True, source="measurement.info.iadc.points")
- #channel_data.id = id_data
- class Meta:
- model = models.measurement_data
- fields = ['measurement_id', 'data_num', 'averaging_num', 'channel_data', 'measurement_rate', 'measurement_points']
- class measurement_post_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- #id = serializers.IntegerField()
- info = measurement_info_Serializer(write_only=True)
- infostr = serializers.CharField(read_only=True, source="info.infostr")
- #info.id = id
- #state.id = id
- class Meta:
- model = models.measurement
- fields = ['id', 'info', 'infostr']
- extra_kwargs = {
- 'info': {'write_only': True}
- }
- class measurement_Serializer(WritableNestedModelSerializer, serializers.HyperlinkedModelSerializer):
- #id = serializers.IntegerField()
- #info = measurement_info_Serializer()
- #info.id = id
- #data.id = id
- #state.id = id
- infostr = serializers.CharField(read_only=True, source="info.infostr")
- class Meta:
- model = models.measurement
- fields = ['id', 'infostr']
|