from rest_framework import serializers from .models import Payment, Topup from devices.serializers import DeviceSerializer class PaymentSerializer(serializers.ModelSerializer): devices = DeviceSerializer(many=True, read_only=True) class Meta: # type: ignore model = Payment fields = "__all__" class UpdatePaymentSerializer(serializers.ModelSerializer): class Meta: # type: ignore model = Payment fields = [ "number_of_months", ] class TopupSerializer(serializers.ModelSerializer): user = serializers.SerializerMethodField() is_expired = serializers.SerializerMethodField() def get_user(self, obj): user = obj.user if user: return { "id": user.id, "name": user.first_name + " " + user.last_name, "id_card": user.id_card, "mobile": user.mobile, } return None def get_is_expired(self, obj): return obj.is_expired class Meta: # type: ignore model = Topup fields = [ "id", "amount", "user", "paid", "status", "mib_reference", "is_expired", "expires_at", "created_at", "updated_at", ] read_only_fields = ["id", "created_at", "updated_at"]