percentage done

This commit is contained in:
Sayyid Hamid Mahdavi 2025-08-03 16:22:36 +03:30
parent e9b2e3b51d
commit 53adac2d26
2 changed files with 5 additions and 23 deletions

View file

@ -3,23 +3,6 @@ from rest_framework import serializers
from .models import Promotion, Plan
class PlanSerializer(serializers.ModelSerializer):
promotion_amount = serializers.SerializerMethodField(method_name='get_promotion_amount')
def get_promotion_amount(self, obj):
user = self.context['request'].user
return obj.calculate_promotion(user)
class Meta:
model = Plan
fields = (
"promotion_amount",
"title",
"description",
"application",
)
read_only_fields = ('application', "promotion_amount")
class PromotionSerializer(serializers.ModelSerializer):
base_amount = serializers.IntegerField(required=True)
promotion_amount = serializers.IntegerField(read_only=True)
@ -35,7 +18,7 @@ class PromotionSerializer(serializers.ModelSerializer):
)
read_only_fields = ('user','application', "promotion_amount",)
class CalculatedPlanSerializer(serializers.ModelSerializer):
class PlanSerializer(serializers.ModelSerializer):
base_amount = serializers.IntegerField(required=True)
promotion_amount = serializers.IntegerField(read_only=True)

View file

@ -10,7 +10,7 @@ from rest_framework.generics import get_object_or_404
from rest_framework.viewsets import GenericViewSet
from .models import Promotion, Plan
from .serializers import PlanSerializer, PromotionSerializer, CalculatedPlanSerializer, PlanPromotSerializer
from .serializers import PlanSerializer, PromotionSerializer
from apps.gooyal_oauth2.models import Application
from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements
from apps.gooyal_oauth2.utils import get_application
@ -104,10 +104,9 @@ class UserPlanViewSet(mixins.RetrieveModelMixin,
queryset = Plan.objects.all()
return queryset
@extend_schema(responses=CalculatedPlanSerializer(many=True))
@action(detail=False, methods=['POST'], serializer_class=CalculatedPlanSerializer)
def calculate(self, request):
user = self.request.user
@extend_schema(responses=PlanSerializer(many=True))
@action(detail=False, methods=['POST'], serializer_class=PlanSerializer)
def available(self, request):
serializer = self.get_serializer(data=self.request.data)
serializer.is_valid(raise_exception=True)
print(serializer.validated_data)