59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
from rest_framework import serializers
|
|
|
|
from .models import EquipmentCategory, EquipmentImage, EquipmentItem
|
|
|
|
|
|
class EquipmentCategorySerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = EquipmentCategory
|
|
fields = ("id", "name", "slug", "description")
|
|
|
|
|
|
class EquipmentImageSerializer(serializers.ModelSerializer):
|
|
image_url = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = EquipmentImage
|
|
fields = ("id", "image_url", "alt_text", "sort_order", "is_primary")
|
|
|
|
def get_image_url(self, obj):
|
|
if not obj.image:
|
|
return ""
|
|
request = self.context.get("request")
|
|
if request:
|
|
return request.build_absolute_uri(obj.image.url)
|
|
return obj.image.url
|
|
|
|
|
|
class EquipmentItemSerializer(serializers.ModelSerializer):
|
|
category = EquipmentCategorySerializer(read_only=True)
|
|
category_id = serializers.PrimaryKeyRelatedField(
|
|
queryset=EquipmentCategory.objects.all(),
|
|
source="category",
|
|
write_only=True,
|
|
)
|
|
vendor_slug = serializers.CharField(source="vendor.slug", read_only=True)
|
|
vendor_business_name = serializers.CharField(source="vendor.business_name", read_only=True)
|
|
images = EquipmentImageSerializer(many=True, read_only=True)
|
|
|
|
class Meta:
|
|
model = EquipmentItem
|
|
fields = (
|
|
"id",
|
|
"public_id",
|
|
"title",
|
|
"description",
|
|
"details",
|
|
"location",
|
|
"price_per_day",
|
|
"is_active",
|
|
"category",
|
|
"category_id",
|
|
"vendor_slug",
|
|
"vendor_business_name",
|
|
"images",
|
|
"created_at",
|
|
"updated_at",
|
|
)
|
|
read_only_fields = ("created_at", "updated_at")
|