Files
game-cards-poker-design/backend/apps/projects/serializers.py

55 lines
1.7 KiB
Python

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',
]