You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.3 KiB
Python

# 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