from rest_framework import serializers from django.conf import settings from .models import Project, Asset, CardLayer class ProjectSerializer(serializers.ModelSerializer): class Meta: model = Project fields = [ 'id', 'name', 'template_id', 'card_width', 'card_height', 'design', 'card_overrides', 'number_layout', 'face_orientations', 'export_resolution', 'export_include_back', 'created_at', 'updated_at', ] class AssetSerializer(serializers.ModelSerializer): file_url = serializers.SerializerMethodField() class Meta: model = Asset fields = ['id', 'asset_type', 'asset_key', 'file_path', 'file_name', 'file_url', 'width', 'height', 'uploaded_at'] def get_file_url(self, obj): if obj.file_path: request = self.context.get('request') if request: return request.build_absolute_uri(f'{settings.MEDIA_URL}{obj.file_path}') return f'{settings.MEDIA_URL}{obj.file_path}' return None class CardLayerSerializer(serializers.ModelSerializer): class Meta: model = CardLayer fields = '__all__' class ProjectDetailSerializer(serializers.ModelSerializer): assets = AssetSerializer(many=True, read_only=True) layers = CardLayerSerializer(many=True, read_only=True) class Meta: model = Project fields = [ 'id', 'name', 'template_id', 'card_width', 'card_height', 'design', 'card_overrides', 'number_layout', 'face_orientations', 'export_resolution', 'export_include_back', 'assets', 'layers', 'created_at', 'updated_at', ]