31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
from rest_framework import serializers
|
|
from django.conf import settings
|
|
from drf_spectacular.utils import extend_schema_field
|
|
from drf_spectacular.types import OpenApiTypes
|
|
from typing import Optional
|
|
from sitemanagement.models import Object, Zone, Sensor
|
|
|
|
class SensorBasicSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Sensor
|
|
fields = ('id', 'name', 'serial_number', 'sensor_type')
|
|
|
|
class ZoneSerializer(serializers.ModelSerializer):
|
|
sensors = SensorBasicSerializer(many=True, read_only=True)
|
|
|
|
class Meta:
|
|
model = Zone
|
|
fields = ('id', 'name', 'sensors')
|
|
|
|
class ObjectSerializer(serializers.ModelSerializer):
|
|
zones = ZoneSerializer(many=True, read_only=True)
|
|
image = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = Object
|
|
fields = ('id', 'title', 'description', 'image', 'address', 'floors', 'area', 'zones')
|
|
|
|
@extend_schema_field(OpenApiTypes.URI)
|
|
def get_image(self, obj) -> Optional[str]:
|
|
"""Возвращает URL изображения объекта"""
|
|
return f"{settings.BASE_URL}{obj.image.url}" if obj.image else None |