Ilo/apps/payments/api/serializers.py
2026-05-02 20:01:30 +03:30

71 lines
2.2 KiB
Python

from rest_framework import serializers
from apps.payments.models import Order
class CheckoutResponseSerializer(serializers.Serializer):
order_id = serializers.IntegerField()
redirect_url = serializers.URLField()
amount_toman = serializers.IntegerField()
gateway = serializers.CharField()
class OrderSerializer(serializers.ModelSerializer):
course_id = serializers.IntegerField(read_only=True)
course_slug = serializers.CharField(source="course.slug", read_only=True)
course_title = serializers.CharField(source="course.title", read_only=True)
promo_code = serializers.CharField(source="promo_code.code", read_only=True, allow_null=True)
referrer_code = serializers.CharField(source="referrer.referral_code", read_only=True, allow_null=True)
class Meta:
model = Order
fields = [
"id",
"course_id",
"course_slug",
"course_title",
"base_amount_toman",
"discount_amount_toman",
"amount_toman",
"ilo_fee_toman",
"instructor_share_toman",
"commission_percent_snapshot",
"gateway",
"ref_id",
"status",
"created_at",
"paid_at",
"failed_at",
"last_error",
"promo_code",
"referrer_code",
]
read_only_fields = fields
class InstructorSaleSerializer(serializers.ModelSerializer):
"""Sale entry shown in the instructor's revenue / orders panel."""
course_id = serializers.IntegerField(read_only=True)
course_title = serializers.CharField(source="course.title", read_only=True)
student_id = serializers.IntegerField(source="student.id", read_only=True)
student_name = serializers.CharField(source="student.full_name", read_only=True)
class Meta:
model = Order
fields = [
"id",
"course_id",
"course_title",
"student_id",
"student_name",
"amount_toman",
"ilo_fee_toman",
"instructor_share_toman",
"commission_percent_snapshot",
"status",
"created_at",
"paid_at",
]
read_only_fields = fields