Source code for shuup.gdpr.serializers

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 Meta: model = GDPRCookieCategory exclude = ()
[docs] class GDPRConsentSerializer(serializers.ModelSerializer): documents = GDPRConsentDocumentSerializer(many=True)
[docs] class Meta: model = GDPRUserConsent exclude = ()
[docs] class UserSerializer(serializers.ModelSerializer): gdpr_consents = GDPRConsentSerializer(many=True)
[docs] class Meta: model = get_user_model() exclude = ("password",) # TODO: should we also return this?
[docs] class AddressSerializer(serializers.ModelSerializer):
[docs] class Meta: model = MutableAddress exclude = ()
[docs] class OrderLineSerializer(serializers.ModelSerializer): type = EnumField(OrderLineType)
[docs] class Meta: model = OrderLine exclude = ()
[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 Meta: model = Order exclude = ()
[docs] class SavedAddressSerializer(serializers.ModelSerializer): role = EnumField(SavedAddressRole) status = EnumField(SavedAddressStatus) address = AddressSerializer()
[docs] class Meta: model = SavedAddress exclude = ()
[docs] class CoreBasketSerializer(serializers.ModelSerializer):
[docs] class Meta: model = Basket exclude = ()
[docs] class FrontSavedBasketSerializer(serializers.ModelSerializer):
[docs] class Meta: model = StoredBasket exclude = ()
[docs] class ContactSerializer(serializers.ModelSerializer): default_billing_address = AddressSerializer() default_shipping_address = AddressSerializer() saved_addresses = SavedAddressSerializer(many=True, source="savedaddress_set") orders = OrderSerializer(many=True, source="customer_orders") log_entries = ContactLogEntrySerializer(many=True) saved_baskets = FrontSavedBasketSerializer(many=True, source="customer_baskets") baskets = CoreBasketSerializer(many=True, source="customer_core_baskets")
[docs] class Meta: model = Contact exclude = ("polymorphic_ctype",)
[docs] class GDPRCompanyContactSerializer(serializers.ModelSerializer): log_entries = PersonContactLogEntrySerializer(many=True)
[docs] class Meta: model = CompanyContact fields = "__all__"
[docs] class GDPRPersonContactSerializer(ContactSerializer): gender = EnumField(Gender) user = UserSerializer() log_entries = PersonContactLogEntrySerializer(many=True) company_memberships = GDPRCompanyContactSerializer(many=True)
[docs] class Meta: model = PersonContact exclude = ("polymorphic_ctype",)