# serializers.py in Osina app from rest_framework import serializers from osinacore.models import * class BusinessTypeSerializer(serializers.ModelSerializer): class Meta: model = BusinessType fields = "__all__" class StaffProfileSerializer(serializers.ModelSerializer): class Meta: model = StaffProfile fields = "__all__" class DepartmentSerializer(serializers.ModelSerializer): class Meta: model = Department fields = "__all__" class JobPositionSerializer(serializers.ModelSerializer): department = DepartmentSerializer() class Meta: model = JobPosition fields = "__all__" class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = "__all__" class CustomerProfileSerializer(serializers.ModelSerializer): user = UserSerializer() reference_name = serializers.CharField(source='reference.name', read_only=True) class Meta: model = CustomerProfile fields = "__all__" class StaffProfileSerializer(serializers.ModelSerializer): user = UserSerializer() class Meta: model = StaffProfile fields = "__all__" class ProjectTypeSerializer(serializers.ModelSerializer): class Meta: model = ProjectType fields = "__all__" class ProjectStatusSerializer(serializers.ModelSerializer): class Meta: model = ProjectStatus fields = "__all__" class ProjectSerializer(serializers.ModelSerializer): types = ProjectTypeSerializer(read_only=True, many=True, source="project_type") members = StaffProfileSerializer(read_only=True, many=True) manager = StaffProfileSerializer(read_only=True, many=False) statuses = ProjectStatusSerializer(read_only=True, many=True, source="projectstatus_set") class Meta: model = Project fields = "__all__" def to_representation(self, instance): representation = super().to_representation(instance) # Exclude manager from members list manager_id = representation.get("manager", {}).get("id") if manager_id: representation["members"] = [ member for member in representation["members"] if member.get("id") != manager_id ] return representation