from rest_framework import serializers from .models import User class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = ["id", "email", "full_name", "company_name", "role", "is_active", "created_at"] # Role and is_active are never set through this API: a writable role is # how a buyer could promote themselves to admin. They are changed in the # administration area instead. read_only_fields = ["id", "created_at", "role", "is_active"] class UserDetailSerializer(serializers.ModelSerializer): class Meta: model = User fields = ["id", "email", "full_name", "company_name", "role", "stripe_customer_id", "is_active", "created_at", "updated_at"] read_only_fields = ["id", "created_at", "updated_at"] class UserCreateSerializer(serializers.ModelSerializer): password = serializers.CharField(write_only=True, required=False) class Meta: model = User fields = ["email", "full_name", "company_name", "role", "password"] def create(self, validated_data): password = validated_data.pop("password", None) user = User.objects.create_user(**validated_data) if password: user.set_password(password) user.save() return user