Files
RasadDam_Backend/apps/pos_device/web/api/v1/serilaizers/device.py

76 lines
2.1 KiB
Python

from apps.pos_device.web.api.v1.serilaizers import client as client_serializer
from rest_framework.serializers import ModelSerializer
from apps.pos_device import models as pos_models
from rest_framework.exceptions import APIException
from apps.pos_device import exceptions as pos_exceptions
from rest_framework import status
class ProviderCompanySerializer(ModelSerializer):
class Meta:
model = pos_models.ProviderCompany
fields = '__all__'
class DeviceSerializer(ModelSerializer):
class Meta:
model = pos_models.Device
fields = '__all__'
def to_representation(self, instance):
""" custom output of serializer """
representation = super().to_representation(instance)
representation['organization'] = {
'name': instance.organization.name,
'id': instance.organization.id,
'province': instance.organization.province.id
}
representation['assignment'] = DeviceAssignmentSerializer(
instance.assignment.all().first()
).data
return representation
class DeviceVersionSerializer(ModelSerializer):
class Meta:
model = pos_models.DeviceVersion
fields = '__all__'
class SessionSerializer(ModelSerializer):
class Meta:
model = pos_models.Sessions
fields = '__all__'
class DeviceAssignmentSerializer(ModelSerializer):
class Meta:
model = pos_models.DeviceAssignment
fields = '__all__'
def validate(self, attrs):
device = attrs['device']
client = attrs['client']
if self.Meta.model.objects.filter(device=device, client=client).exists():
raise pos_exceptions.DeviceAlreadyAssigned()
def to_representation(self, instance):
representation = super().to_representation(instance)
representation['client'] = client_serializer.POSClientSerializer(
instance.client
).data
return representation
class StakeHoldersSerializer(ModelSerializer):
class Meta:
model = pos_models.StakeHolders
fields = '__all__'