mirror of
https://github.com/Dadechin/Dashboard-XRoom.git
synced 2025-07-03 00:34:34 +00:00
78 lines
2.4 KiB
Python
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
|
|
# ]
|
|
|
|
|
|
|
|
|
|
|