Fixes: fix circular imports in serializers

This commit is contained in:
Egor Pavlovich Gorbunov 2025-06-05 17:52:21 +03:00
parent 3c21f9f386
commit 47a18a005b
3 changed files with 65 additions and 65 deletions

View file

@ -1,9 +1,7 @@
from rest_framework.fields import (
BooleanField,
CharField,
DictField,
Field,
FloatField,
IntegerField,
JSONField,
ListField,
@ -11,8 +9,6 @@ from rest_framework.fields import (
)
from rest_framework.serializers import ListSerializer, Serializer
from core.models import Address
from .detail import * # noqa: F403
from .simple import * # noqa: F403
@ -111,63 +107,3 @@ class BuyAsBusinessOrderSerializer(Serializer):
billing_business_address_uuid = CharField(required=False)
shipping_business_address_uuid = CharField(required=False)
payment_method = CharField(required=True)
class AddressAutocompleteInputSerializer(Serializer):
q = CharField(required=True)
limit = IntegerField(required=False, min_value=1, max_value=10, default=5)
class AddressSuggestionSerializer(Serializer):
display_name = CharField()
lat = FloatField()
lon = FloatField()
address = DictField(child=CharField())
class AddressSerializer(ModelSerializer): # noqa: F405
latitude = FloatField(source="location.y", read_only=True)
longitude = 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(ModelSerializer): # noqa: F405
raw_data = CharField(
write_only=True,
max_length=512,
)
address_line_1 = CharField(write_only=True, max_length=128, required=False)
address_line_2 = CharField(write_only=True, max_length=128, required=False)
class Meta:
model = Address
fields = ["raw_data", "address_line_1", "address_line_2"]
def create(self, validated_data):
raw = validated_data.pop("raw_data")
user = None
if self.context["request"].user.is_authenticated:
user = self.context["request"].user
return Address.objects.create(raw_data=raw, user=user, **validated_data)

View file

@ -23,7 +23,7 @@ from core.models import (
Vendor,
Wishlist,
)
from core.serializers import AddressSerializer
from core.serializers.utility import AddressSerializer
class AttributeGroupSimpleSerializer(ModelSerializer):

View file

@ -0,0 +1,64 @@
from rest_framework.fields import CharField, DictField, FloatField, IntegerField
from rest_framework.serializers import ModelSerializer, Serializer
from core.models import Address
class AddressAutocompleteInputSerializer(Serializer):
q = CharField(required=True)
limit = IntegerField(required=False, min_value=1, max_value=10, default=5)
class AddressSuggestionSerializer(Serializer):
display_name = CharField()
lat = FloatField()
lon = FloatField()
address = DictField(child=CharField())
class AddressSerializer(ModelSerializer):
latitude = FloatField(source="location.y", read_only=True)
longitude = 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(ModelSerializer):
raw_data = CharField(
write_only=True,
max_length=512,
)
address_line_1 = CharField(write_only=True, max_length=128, required=False)
address_line_2 = CharField(write_only=True, max_length=128, required=False)
class Meta:
model = Address
fields = ["raw_data", "address_line_1", "address_line_2"]
def create(self, validated_data):
raw = validated_data.pop("raw_data")
user = None
if self.context["request"].user.is_authenticated:
user = self.context["request"].user
return Address.objects.create(raw_data=raw, user=user, **validated_data)