from typing import Any, ClassVar

from rest_framework import serializers

from .models import GeodataLayer


class CoordinateSerializer(serializers.Serializer[Any]):
    lat = serializers.FloatField(help_text="Latitude coordinate")
    lng = serializers.FloatField(help_text="Longitude coordinate")


class GeoFeatureSerializer(serializers.Serializer[Any]):
    name = serializers.CharField(help_text="Name of the geographical feature")
    type = serializers.CharField(help_text="Type of the feature (e.g., polygon, point)")
    coordinates = CoordinateSerializer(
        many=True, help_text="List of coordinate points defining the feature"
    )
    polygon_color = serializers.CharField(
        required=False, help_text="RGBA hex color for the polygon fill (e.g., 24589d0f)"
    )
    line_color = serializers.CharField(
        required=False,
        help_text="RGBA hex color for the polygon border (e.g., ff589d0f)",
    )
    attributes = serializers.DictField(
        child=serializers.CharField(),
        required=False,
        default=dict,
        help_text="Additional feature attributes from KML ExtendedData",
    )


class GeodataLayerSerializer(serializers.ModelSerializer[GeodataLayer]):
    class Meta:
        model = GeodataLayer
        fields: ClassVar[list[str]] = ["data"]

    def to_representation(self, instance: GeodataLayer) -> Any:
        return instance.data

Homonyms

cyberia/research/events/backend/cyber_valley/shaman_verification/serializers.py
cyberia/research/events/backend/cyber_valley/siwe/serializers.py
cyberia/research/events/backend/cyber_valley/telegram_bot/serializers.py
cyberia/research/events/backend/cyber_valley/notifications/serializers.py
cyberia/research/events/backend/cyber_valley/custom_auth/serializers.py
cyberia/research/events/backend/cyber_valley/users/serializers.py
cyberia/research/events/backend/cyber_valley/web3_auth/serializers.py
cyberia/research/events/backend/cyber_valley/events/serializers.py

Graph