From aa26d239e8d16c603eaf11a5a58578446cce6df3 Mon Sep 17 00:00:00 2001 From: parkseongheum Date: Fri, 3 Mar 2023 21:07:18 +0900 Subject: [PATCH] =?UTF-8?q?update:=20available=20=ED=95=84=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sponsor/serializers.py | 17 ++++++++++++----- sponsor/viewsets.py | 4 ++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/sponsor/serializers.py b/sponsor/serializers.py index 0fe4371..f8190c0 100644 --- a/sponsor/serializers.py +++ b/sponsor/serializers.py @@ -1,10 +1,11 @@ from rest_framework.fields import SerializerMethodField -from rest_framework.serializers import ModelSerializer + +import rest_framework.serializers as serializers from sponsor.models import Sponsor, SponsorLevel -class SponsorSerializer(ModelSerializer): +class SponsorSerializer(serializers.ModelSerializer): class Meta: model = Sponsor fields = [ @@ -23,7 +24,7 @@ class Meta: ] -class SponsorListSerializer(ModelSerializer): +class SponsorListSerializer(serializers.ModelSerializer): class Meta: model = Sponsor fields = [ @@ -35,7 +36,7 @@ class Meta: ] -class SponsorLevelSerializer(ModelSerializer): +class SponsorLevelSerializer(serializers.ModelSerializer): class Meta: model = SponsorLevel fields = [ @@ -47,8 +48,9 @@ class Meta: ] # TODO: Add fields to show -class SponsorRemainingAccountSerializer(ModelSerializer): +class SponsorRemainingAccountSerializer(serializers.ModelSerializer): remaining = SerializerMethodField() + available = SerializerMethodField() class Meta: model = SponsorLevel @@ -58,8 +60,13 @@ class Meta: "limit", "remaining", "id", + "available", ] @staticmethod def get_remaining(obj): return obj.current_remaining_number + + @staticmethod + def get_available(obj: SponsorLevel): + return True if obj.current_remaining_number < obj.limit else False diff --git a/sponsor/viewsets.py b/sponsor/viewsets.py index 5cbceaf..ca233af 100644 --- a/sponsor/viewsets.py +++ b/sponsor/viewsets.py @@ -75,7 +75,7 @@ def list(self, request, *args, **kwargs): class SponsorRemainingAccountViewSet(ModelViewSet): - serializer_class = SponsorLevelSerializer + serializer_class = SponsorRemainingAccountSerializer http_method_names = ["get"] def get_queryset(self): @@ -83,6 +83,6 @@ def get_queryset(self): def list(self, request, *args, **kwargs): queryset = SponsorLevel.objects.all().order_by("-price") - serializer = SponsorRemainingAccountSerializer(queryset, many=True) + serializer = self.get_serializer(queryset, many=True) return Response(serializer.data)