Dashboard-XRoom/core/serializers/MeetingSerializer.py
2025-06-09 12:32:19 +03:30

78 lines
2.4 KiB
Python

from rest_framework import serializers
from core.models.Meeting import Meeting
from core.models.customer import Customer
from core.serializers.SpaceSerializer import SpaceSerializer
from core.serializers.CustomerSerializer import CustomerSerializer
from core.serializers.AssetBundleRoomSerializer import AssetBundleRoomSerializer
class MeetingSerializer(serializers.ModelSerializer):
class Meta:
model = Meeting
fields = ['id', 'name', 'description', 'date_time', 'creator_user', 'space', 'asset_bundle', 'use_space']
class MeetingSerializerFull(serializers.ModelSerializer):
space_data = serializers.SerializerMethodField()
asset_bundle_data = serializers.SerializerMethodField()
invited_users = serializers.SerializerMethodField()
class Meta:
model = Meeting
fields = [
'id', 'name', 'description', 'date_time', 'creator_user',
'use_space', 'space', 'asset_bundle',
'space_data', 'asset_bundle_data', 'invited_users'
]
def get_space_data(self, obj):
if obj.use_space and obj.space:
return SpaceSerializer(obj.space).data # Replace with your actual Space serializer
return None
def get_asset_bundle_data(self, obj):
if not obj.use_space and obj.asset_bundle:
return AssetBundleRoomSerializer(obj.asset_bundle).data # Replace with your actual AssetBundle serializer
return None
def get_invited_users(self, obj):
invitations = obj.invitations.select_related('user')
result = []
for invite in invitations:
user = invite.user
try:
customer = Customer.objects.get(user=user)
customer_data = CustomerSerializer(customer).data
except Customer.DoesNotExist:
customer_data = None
result.append({
"id": user.id,
"username": user.username,
"email": user.email,
"customer": customer_data
})
return result
# def get_invited_users(self, obj):
# invitations = obj.invitations.select_related('user')
# return [
# {
# "id": invite.user.id,
# "username": invite.user.username,
# "email": invite.user.email,
# # add any custom customer fields you want
# }
# for invite in invitations
# ]