# -*- coding: utf-8 -*-
# This file is part of Shuup.
#
# Copyright (c) 2012-2021, Shuup Commerce Inc. All rights reserved.
#
# This source code is licensed under the OSL-3.0 license found in the
# LICENSE file in the root directory of this source tree.
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):