72 lines
1.8 KiB
Python
72 lines
1.8 KiB
Python
from rest_framework import serializers
|
|
from location import models
|
|
|
|
|
|
class CountrySerializer(serializers.ModelSerializer):
|
|
"""Country serializer."""
|
|
class Meta:
|
|
model = models.Country
|
|
fields = [
|
|
'id',
|
|
'name'
|
|
]
|
|
|
|
|
|
class RegionSerializer(serializers.ModelSerializer):
|
|
"""Region serializer"""
|
|
country = CountrySerializer()
|
|
|
|
class Meta:
|
|
model = models.Region
|
|
fields = [
|
|
'id',
|
|
'name',
|
|
'code',
|
|
'parent_region',
|
|
'country'
|
|
]
|
|
|
|
|
|
class CitySerializer(serializers.ModelSerializer):
|
|
"""City serializer."""
|
|
country = CountrySerializer()
|
|
region = RegionSerializer()
|
|
|
|
class Meta:
|
|
model = models.City
|
|
fields = [
|
|
'id',
|
|
'name',
|
|
'code',
|
|
'region',
|
|
'country',
|
|
'postal_code',
|
|
'is_island',
|
|
]
|
|
|
|
|
|
class AddressSerializer(serializers.ModelSerializer):
|
|
"""Address serializer."""
|
|
city = CitySerializer()
|
|
longitude = serializers.DecimalField(max_digits=10, decimal_places=6)
|
|
latitude = serializers.DecimalField(max_digits=10, decimal_places=6)
|
|
|
|
class Meta:
|
|
model = models.Address
|
|
fields = [
|
|
'city',
|
|
'street_name_1',
|
|
'street_name_2',
|
|
'number',
|
|
'postal_code',
|
|
'longitude',
|
|
'latitude'
|
|
]
|
|
|
|
# def validate(self, attrs):
|
|
# geo_lat = attrs.pop('geo_lat') if 'geo_lat' in attrs else None
|
|
# geo_lon = attrs.pop('geo_lon') if 'geo_lon' in attrs else None
|
|
# if geo_lat and geo_lon:
|
|
# # Point(longitude, latitude)
|
|
# attrs['coordinates'] = Point(geo_lon, geo_lat)
|
|
# return attrs |