DRF_Template/backend/subscriptions/serializers.py

45 lines
1.6 KiB
Python
Raw Normal View History

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