Fixes: fix circular imports in serializers
This commit is contained in:
parent
3c21f9f386
commit
47a18a005b
3 changed files with 65 additions and 65 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ from core.models import (
|
|||
Vendor,
|
||||
Wishlist,
|
||||
)
|
||||
from core.serializers import AddressSerializer
|
||||
from core.serializers.utility import AddressSerializer
|
||||
|
||||
|
||||
class AttributeGroupSimpleSerializer(ModelSerializer):
|
||||
|
|
|
|||
64
core/serializers/utility.py
Normal file
64
core/serializers/utility.py
Normal 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)
|
||||
Loading…
Reference in a new issue