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 # ]