seller_central_backend/api/serializers.py

69 lines
2.2 KiB
Python
Raw Normal View History

2026-08-09 06:12:43 +00:00
from rest_framework import serializers
from django.contrib.auth.models import User
from .models import SupplierProfile, Product, Order, ReturnRequest, Wallet, WalletTransaction
class SupplierProfileSerializer(serializers.ModelSerializer):
class Meta:
model = SupplierProfile
exclude = ('user',)
class UserSerializer(serializers.ModelSerializer):
profile = SupplierProfileSerializer(read_only=True)
class Meta:
model = User
fields = ('id', 'username', 'email', 'profile')
class RegisterSerializer(serializers.Serializer):
username = serializers.CharField(required=True)
email = serializers.EmailField(required=True)
phone = serializers.CharField(required=True)
password = serializers.CharField(required=True, write_only=True)
def create(self, validated_data):
user = User.objects.create_user(
username=validated_data['username'],
email=validated_data['email'],
password=validated_data['password']
)
SupplierProfile.objects.create(
user=user,
phone=validated_data['phone']
)
Wallet.objects.create(
supplier=user,
outstanding=850.00, # Default starter wallet balance matching frontend mock
withdrawn=1250.00
)
return user
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = '__all__'
read_only_fields = ('supplier',)
class OrderSerializer(serializers.ModelSerializer):
class Meta:
model = Order
fields = '__all__'
read_only_fields = ('supplier',)
class ReturnRequestSerializer(serializers.ModelSerializer):
class Meta:
model = ReturnRequest
fields = '__all__'
read_only_fields = ('supplier',)
class WalletTransactionSerializer(serializers.ModelSerializer):
class Meta:
model = WalletTransaction
fields = '__all__'
class WalletSerializer(serializers.ModelSerializer):
transactions = WalletTransactionSerializer(many=True, read_only=True)
class Meta:
model = Wallet
fields = ('outstanding', 'withdrawn', 'transactions')