inital commit
This commit is contained in:
91
accounts/serializers.py
Normal file
91
accounts/serializers.py
Normal file
@@ -0,0 +1,91 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from rest_framework import serializers
|
||||
|
||||
from .models import VendorProfile
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class VendorProfileSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = VendorProfile
|
||||
fields = (
|
||||
"business_name",
|
||||
"slug",
|
||||
"description",
|
||||
"contact_phone",
|
||||
"contact_email",
|
||||
"address_line1",
|
||||
"address_line2",
|
||||
"city",
|
||||
"state",
|
||||
"postal_code",
|
||||
"country",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
)
|
||||
read_only_fields = ("slug", "created_at", "updated_at")
|
||||
|
||||
|
||||
class VendorRegistrationSerializer(serializers.Serializer):
|
||||
email = serializers.EmailField()
|
||||
password = serializers.CharField(write_only=True, min_length=8)
|
||||
first_name = serializers.CharField(required=False, allow_blank=True, max_length=150)
|
||||
last_name = serializers.CharField(required=False, allow_blank=True, max_length=150)
|
||||
phone_number = serializers.CharField(required=False, allow_blank=True, max_length=32)
|
||||
|
||||
business_name = serializers.CharField(max_length=255)
|
||||
description = serializers.CharField(required=False, allow_blank=True)
|
||||
contact_phone = serializers.CharField(required=False, allow_blank=True, max_length=32)
|
||||
contact_email = serializers.EmailField(required=False, allow_blank=True)
|
||||
address_line1 = serializers.CharField(required=False, allow_blank=True, max_length=255)
|
||||
address_line2 = serializers.CharField(required=False, allow_blank=True, max_length=255)
|
||||
city = serializers.CharField(required=False, allow_blank=True, max_length=100)
|
||||
state = serializers.CharField(required=False, allow_blank=True, max_length=100)
|
||||
postal_code = serializers.CharField(required=False, allow_blank=True, max_length=32)
|
||||
country = serializers.CharField(required=False, allow_blank=True, max_length=100)
|
||||
|
||||
def validate_email(self, value):
|
||||
if User.objects.filter(email__iexact=value).exists():
|
||||
raise serializers.ValidationError("A user with this email already exists.")
|
||||
return value
|
||||
|
||||
def create(self, validated_data):
|
||||
profile_data = {
|
||||
"business_name": validated_data.pop("business_name"),
|
||||
"description": validated_data.pop("description", ""),
|
||||
"contact_phone": validated_data.pop("contact_phone", ""),
|
||||
"contact_email": validated_data.pop("contact_email", ""),
|
||||
"address_line1": validated_data.pop("address_line1", ""),
|
||||
"address_line2": validated_data.pop("address_line2", ""),
|
||||
"city": validated_data.pop("city", ""),
|
||||
"state": validated_data.pop("state", ""),
|
||||
"postal_code": validated_data.pop("postal_code", ""),
|
||||
"country": validated_data.pop("country", ""),
|
||||
}
|
||||
password = validated_data.pop("password")
|
||||
user = User.objects.create_user(
|
||||
password=password,
|
||||
is_vendor=True,
|
||||
is_customer=False,
|
||||
**validated_data,
|
||||
)
|
||||
VendorProfile.objects.create(user=user, **profile_data)
|
||||
return user
|
||||
|
||||
|
||||
class UserMeSerializer(serializers.ModelSerializer):
|
||||
vendor_profile = VendorProfileSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = (
|
||||
"id",
|
||||
"email",
|
||||
"first_name",
|
||||
"last_name",
|
||||
"phone_number",
|
||||
"is_vendor",
|
||||
"is_customer",
|
||||
"vendor_profile",
|
||||
)
|
||||
Reference in New Issue
Block a user