schon/geo/serializers.py
Egor fureunoir Gorbunov 564ce0706b Features: Full Geo rework.
Fixes: 1) Address redundant migration logic by dropping stale migrations; 2) Cleanup swapper-based dependencies in Geo models;

Extra: Streamlined database initialization by resetting all previous migrations.
2025-05-19 14:45:53 +03:00

65 lines
1.6 KiB
Python

from rest_framework import serializers
from geo.models import Address
class AddressAutocompleteInputSerializer(serializers.Serializer):
q = serializers.CharField(
required=True
)
limit = serializers.IntegerField(
required=False,
min_value=1,
max_value=10,
default=5
)
class AddressSuggestionSerializer(serializers.Serializer):
display_name = serializers.CharField()
lat = serializers.FloatField()
lon = serializers.FloatField()
address = serializers.DictField(child=serializers.CharField())
class AddressSerializer(serializers.ModelSerializer):
latitude = serializers.FloatField(source="location.y", read_only=True)
longitude = serializers.FloatField(source="location.x", read_only=True)
class Meta:
model = Address
fields = [
"uuid",
"street",
"district",
"city",
"region",
"postal_code",
"country",
"latitude",
"longitude",
"raw_data",
"api_response",
"user",
]
read_only_fields = [
"latitude",
"longitude",
"raw_data",
"api_response",
]
class AddressCreateSerializer(serializers.ModelSerializer):
raw_data = serializers.CharField(
write_only=True,
max_length=512,
)
class Meta:
model = Address
fields = ["raw_data", "user"]
def create(self, validated_data):
raw = validated_data.pop("raw_data")
return Address.objects.create(raw_data=raw, **validated_data)