from rest_framework import serializers from subscriptions.models import SubscriptionPlan, UserSubscription, StripePrice from accounts.serializers import SimpleCustomUserSerializer class SimpleStripePriceSerializer(serializers.ModelSerializer): class Meta: model = StripePrice fields = ['price', 'currency', 'prorated'] class SubscriptionPlanSerializer(serializers.ModelSerializer): class Meta: model = SubscriptionPlan fields = ['id', 'name', 'description', 'annual_price', 'monthly_price', 'group_exclusive'] def to_representation(self, instance): representation = super().to_representation(instance) representation['annual_price'] = SimpleStripePriceSerializer( instance.annual_price, many=False).data representation['monthly_price'] = SimpleStripePriceSerializer( instance.monthly_price, many=False).data return representation class UserSubscriptionSerializer(serializers.ModelSerializer): date = serializers.DateTimeField( format="%m-%d-%Y %I:%M %p", read_only=True) class Meta: model = UserSubscription fields = ['id', 'user', 'user_group', 'subscription', 'date', 'valid', 'annual'] def to_representation(self, instance): representation = super().to_representation(instance) representation['user'] = SimpleCustomUserSerializer( instance.user, many=False).data representation['subscription'] = SubscriptionPlanSerializer( instance.subscription, many=False).data return representation