from rest_framework import serializers from apps.account.models import LocationHistory class LocationHistorySerializer(serializers.ModelSerializer): user = serializers.HiddenField(default=serializers.CurrentUserDefault()) class Meta: model = LocationHistory exclude = ('at_time',) class ReverseGeolocationSerializer(serializers.Serializer): """Serializer for reverse geolocation request query parameters""" lat = serializers.FloatField( required=True, min_value=-90.0, max_value=90.0, help_text="Latitude coordinate (-90 to 90)" ) lon = serializers.FloatField( required=True, min_value=-180.0, max_value=180.0, help_text="Longitude coordinate (-180 to 180)" ) class ReverseGeolocationResponseSerializer(serializers.Serializer): """Serializer for reverse geolocation response""" latitude = serializers.FloatField(read_only=True) longitude = serializers.FloatField(read_only=True) city = serializers.CharField(max_length=100, allow_null=True, read_only=True) country = serializers.CharField(max_length=100, allow_null=True, read_only=True) country_code = serializers.CharField(max_length=10, allow_null=True, read_only=True) accuracy_radius = serializers.IntegerField(allow_null=True, read_only=True, required=False) time_zone = serializers.CharField(max_length=100, allow_null=True, allow_blank=True, read_only=True, required=False) postal_code = serializers.CharField(max_length=20, allow_null=True, allow_blank=True, read_only=True, required=False)