Initial commit
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from rest_framework import serializers
|
||||
|
||||
from apps.salons.models import Review, Salon, SalonPhoto, Service, StaffProfile
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class SalonPhotoSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = SalonPhoto
|
||||
fields = ["id", "image_url", "alt_text", "sort_order"]
|
||||
|
||||
|
||||
class ServiceSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Service
|
||||
fields = ["id", "name", "description", "duration_minutes", "price_amount", "currency", "is_active"]
|
||||
|
||||
|
||||
class StaffSerializer(serializers.ModelSerializer):
|
||||
name = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = StaffProfile
|
||||
fields = ["id", "name", "title", "bio", "is_active"]
|
||||
|
||||
def get_name(self, obj):
|
||||
first = obj.user.first_name or ""
|
||||
last = obj.user.last_name or ""
|
||||
return (first + " " + last).strip() or obj.user.email
|
||||
|
||||
|
||||
class ReviewSerializer(serializers.ModelSerializer):
|
||||
customer_name = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Review
|
||||
fields = ["id", "rating", "comment", "created_at", "customer_name"]
|
||||
|
||||
def get_customer_name(self, obj):
|
||||
first = obj.customer.first_name or ""
|
||||
last = obj.customer.last_name or ""
|
||||
return (first + " " + last).strip() or obj.customer.email
|
||||
|
||||
|
||||
class SalonSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Salon
|
||||
fields = [
|
||||
"id",
|
||||
"name",
|
||||
"description",
|
||||
"address",
|
||||
"city",
|
||||
"phone_number",
|
||||
"email",
|
||||
"website",
|
||||
"rating_avg",
|
||||
"rating_count",
|
||||
]
|
||||
|
||||
|
||||
class SalonDetailSerializer(SalonSerializer):
|
||||
photos = SalonPhotoSerializer(many=True, read_only=True)
|
||||
services = ServiceSerializer(many=True, read_only=True)
|
||||
staff = StaffSerializer(many=True, read_only=True)
|
||||
reviews = ReviewSerializer(many=True, read_only=True)
|
||||
|
||||
class Meta(SalonSerializer.Meta):
|
||||
fields = SalonSerializer.Meta.fields + ["photos", "services", "staff", "reviews"]
|
||||
Reference in New Issue
Block a user