|
|
|
@ -94,3 +94,54 @@ class UploadReceiptsSerializer(serializers.Serializer): |
|
|
|
raise serializers.ValidationError("You can upload a maximum of 10 files.") |
|
|
|
|
|
|
|
return files |
|
|
|
|
|
|
|
|
|
|
|
# ============================================================================= |
|
|
|
# Admin Panel Serializers |
|
|
|
# ============================================================================= |
|
|
|
|
|
|
|
class AdminTransactionReceiptSerializer(serializers.ModelSerializer): |
|
|
|
file = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = TransactionReceipt |
|
|
|
fields = ['id', 'file', 'description', 'uploaded_at'] |
|
|
|
|
|
|
|
def get_file(self, obj): |
|
|
|
request = self.context.get('request') |
|
|
|
if obj.file: |
|
|
|
if request: |
|
|
|
return request.build_absolute_uri(obj.file.url) |
|
|
|
return obj.file.url |
|
|
|
return None |
|
|
|
|
|
|
|
|
|
|
|
class AdminParticipantInfoSerializer(serializers.ModelSerializer): |
|
|
|
phone_number = serializers.CharField(read_only=True) |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = ParticipantInfo |
|
|
|
fields = ['id', 'fullname', 'email', 'phone_number', 'gender', 'birthdate'] |
|
|
|
|
|
|
|
|
|
|
|
class AdminTransactionSerializer(serializers.ModelSerializer): |
|
|
|
user_name = serializers.CharField(source='user.fullname', read_only=True) |
|
|
|
user_email = serializers.CharField(source='user.email', read_only=True) |
|
|
|
course_title = serializers.CharField(source='course.title', read_only=True) |
|
|
|
receipts = AdminTransactionReceiptSerializer(many=True, read_only=True) |
|
|
|
participant_infos = AdminParticipantInfoSerializer(many=True, read_only=True) |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = TransactionParticipant |
|
|
|
fields = [ |
|
|
|
'id', 'user', 'user_name', 'user_email', |
|
|
|
'course', 'course_title', |
|
|
|
'price', 'status', 'payment_method', |
|
|
|
'participant_infos', 'receipts', |
|
|
|
'created_at', 'updated_at' |
|
|
|
] |
|
|
|
read_only_fields = [ |
|
|
|
'id', 'user', 'user_name', 'user_email', |
|
|
|
'course', 'course_title', 'price', 'payment_method', |
|
|
|
'participant_infos', 'receipts', 'created_at', 'updated_at' |
|
|
|
] |