Files
goodtimes/manage_wallets/api/serializers.py

112 lines
3.5 KiB
Python
Raw Permalink Normal View History

2024-02-29 13:25:50 +05:30
from rest_framework import serializers
from accounts.models import IAmPrincipal, IAmPrincipalType
from goodtimes import constants
from manage_wallets import models
class WalletSerializer(serializers.ModelSerializer):
class Meta:
model = models.Wallet
2024-03-05 16:11:58 +05:30
fields = [
"balance",
"deposit",
"earnings",
"coins",
"withdrawal_balance",
2024-02-29 13:25:50 +05:30
]
2024-03-05 16:11:58 +05:30
2024-02-29 13:25:50 +05:30
class TransactionSerializer(serializers.ModelSerializer):
class Meta:
model = models.Transaction
2024-03-10 23:27:22 +05:30
fields = [
2024-04-04 20:11:07 +05:30
"id",
"principal",
"principal_subscription",
"transaction_type",
"payment_method",
"transaction_status",
"amount",
"coins",
2024-04-04 20:11:07 +05:30
"comment",
"order_id",
"product_id",
"reference_id",
2024-03-10 23:27:22 +05:30
]
extra_kwargs = {
2024-04-04 20:11:07 +05:30
"principal": {"read_only": True},
"order_id": {"required": False},
"product_id": {"required": False},
"reference_id": {"required": False},
2024-03-10 23:27:22 +05:30
}
def to_representation(self, instance):
# Customize the representation of the serializer, if necessary
representation = super().to_representation(instance)
# For example, to display a human-readable version of the transaction type:
2024-04-04 20:11:07 +05:30
representation["transaction_type_display"] = (
instance.get_transaction_type_display()
)
representation["payment_method_display"] = instance.get_payment_method_display()
representation["transaction_status_display"] = (
instance.get_transaction_status_display()
)
2024-03-10 23:27:22 +05:30
return representation
2024-02-29 13:25:50 +05:30
class MerchantDepositSerializer(serializers.Serializer):
principal_type = serializers.CharField()
2024-03-05 16:11:58 +05:30
field = serializers.ChoiceField(
choices=[
("player_balance", "Player Balance"),
("merchant_balance", "Merchant Balance"),
("player_deposit", "Player Deposit"),
("merchant_deposit", "Merchant Deposit"),
("player_bonus", "Player Bonus"),
("merchant_bonus", "Merchant Bonus"),
("player_winning", "Player Winning"),
("merchant_commission", "Merchant Commission"),
]
)
2024-02-29 13:25:50 +05:30
amount = serializers.DecimalField(max_digits=14, decimal_places=2)
2024-04-04 20:11:07 +05:30
class PrincipalBankAccountSerializer(serializers.ModelSerializer):
class Meta:
model = models.PrincipalBankAccount
fields = ["first_name", "last_name", "account_no", "sort_code"]
def create(self, validated_data):
# Set 'principal', 'created_by' from 'request.user'.
user = self.context["request"].user
validated_data["principal"] = user
validated_data["created_by"] = user
return super().create(validated_data)
def update(self, instance, validated_data):
# Set 'modified_by' from 'request.user' during update.
user = self.context["request"].user
instance.modified_by = user
return super().update(instance, validated_data)
class WithdrawalRequestSerializer(serializers.ModelSerializer):
class Meta:
model = models.WithdrawalRequest
fields = ["notes"]
2024-04-07 16:45:22 +05:30
class WithdrawalRequestViewSerializer(serializers.ModelSerializer):
class Meta:
model = models.WithdrawalRequest
fields = [
"id",
"coins",
"amount",
"notes",
"reply",
"status",
"created_on",
]
read_only_fields = ["id", "created_on"]