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 (
|
from rest_framework.fields import (
|
||||||
BooleanField,
|
BooleanField,
|
||||||
CharField,
|
CharField,
|
||||||
DictField,
|
|
||||||
Field,
|
Field,
|
||||||
FloatField,
|
|
||||||
IntegerField,
|
IntegerField,
|
||||||
JSONField,
|
JSONField,
|
||||||
ListField,
|
ListField,
|
||||||
|
|
@ -11,8 +9,6 @@ from rest_framework.fields import (
|
||||||
)
|
)
|
||||||
from rest_framework.serializers import ListSerializer, Serializer
|
from rest_framework.serializers import ListSerializer, Serializer
|
||||||
|
|
||||||
from core.models import Address
|
|
||||||
|
|
||||||
from .detail import * # noqa: F403
|
from .detail import * # noqa: F403
|
||||||
from .simple import * # noqa: F403
|
from .simple import * # noqa: F403
|
||||||
|
|
||||||
|
|
@ -111,63 +107,3 @@ class BuyAsBusinessOrderSerializer(Serializer):
|
||||||
billing_business_address_uuid = CharField(required=False)
|
billing_business_address_uuid = CharField(required=False)
|
||||||
shipping_business_address_uuid = CharField(required=False)
|
shipping_business_address_uuid = CharField(required=False)
|
||||||
payment_method = CharField(required=True)
|
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,
|
Vendor,
|
||||||
Wishlist,
|
Wishlist,
|
||||||
)
|
)
|
||||||
from core.serializers import AddressSerializer
|
from core.serializers.utility import AddressSerializer
|
||||||
|
|
||||||
|
|
||||||
class AttributeGroupSimpleSerializer(ModelSerializer):
|
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