from django.contrib.auth import get_user_model
from enumfields.drf.fields import EnumField
from rest_framework import serializers
from shuup.core.models import (
Basket,
CompanyContact,
CompanyContactLogEntry,
Contact,
ContactGroupLogEntry,
Gender,
MutableAddress,
Order,
OrderLine,
OrderLineType,
PaymentStatus,
PersonContact,
PersonContactLogEntry,
SavedAddress,
SavedAddressRole,
SavedAddressStatus,
ShippingStatus,
)
from shuup.front.models import StoredBasket
from shuup.gdpr.models import GDPRCookieCategory, GDPRUserConsent
from shuup.utils.analog import LogEntryKind
[docs]
class ContactLogEntrySerializer(serializers.ModelSerializer):
kind = EnumField(LogEntryKind)
[docs]
class Meta:
model = ContactGroupLogEntry
exclude = ()
[docs]
class CompanyContactLogEntrySerializer(ContactLogEntrySerializer):
[docs]
class Meta:
model = CompanyContactLogEntry
exclude = ()
[docs]
class PersonContactLogEntrySerializer(ContactLogEntrySerializer):
[docs]
class Meta:
model = PersonContactLogEntry
exclude = ()
[docs]
class GDPRConsentDocumentSerializer(serializers.Serializer):
id = serializers.IntegerField()
title = serializers.CharField(source="page.title")
modified_on = serializers.DateTimeField(source="page.modified_on")
[docs]
class GDPRConsentCookieCategorySerializer(serializers.ModelSerializer):
[docs]
class GDPRConsentSerializer(serializers.ModelSerializer):
documents = GDPRConsentDocumentSerializer(many=True)
[docs]
class UserSerializer(serializers.ModelSerializer):
gdpr_consents = GDPRConsentSerializer(many=True)
[docs]
class AddressSerializer(serializers.ModelSerializer):
[docs]
class OrderLineSerializer(serializers.ModelSerializer):
type = EnumField(OrderLineType)
[docs]
class OrderSerializer(serializers.ModelSerializer):
payment_status = EnumField(PaymentStatus)
shipping_status = EnumField(ShippingStatus)
billing_address = AddressSerializer()
shipping_address = AddressSerializer()
lines = OrderLineSerializer(many=True)
[docs]
class SavedAddressSerializer(serializers.ModelSerializer):
role = EnumField(SavedAddressRole)
status = EnumField(SavedAddressStatus)
address = AddressSerializer()
[docs]
class CoreBasketSerializer(serializers.ModelSerializer):
[docs]
class FrontSavedBasketSerializer(serializers.ModelSerializer):