68 lines
2.0 KiB
Python
68 lines
2.0 KiB
Python
from rest_framework import serializers
|
|
from .models import (
|
|
InstitutionType,
|
|
Representative,
|
|
School,
|
|
Partner,
|
|
PartnerRepresentative,
|
|
SchoolResponsibility,
|
|
)
|
|
|
|
class InstitutionTypeSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = InstitutionType
|
|
fields = "__all__"
|
|
|
|
|
|
class RepresentativeSerializer(serializers.ModelSerializer):
|
|
full_name = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = Representative
|
|
fields = ["id", "first_name", "last_name", "middle_name", "phone", "email", "position", "full_name"]
|
|
|
|
def get_full_name(self, obj):
|
|
return f"{obj.first_name} {obj.last_name}" + (f" {obj.middle_name}" if obj.middle_name else "")
|
|
|
|
|
|
class SchoolSerializer(serializers.ModelSerializer):
|
|
director_name = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = School
|
|
fields = ["id", "director", "institution_type", "name", "address", "director_name"]
|
|
|
|
def get_director_name(self, obj):
|
|
if obj.director:
|
|
return f"{obj.director.first_name} {obj.director.last_name}"
|
|
return None
|
|
|
|
|
|
class PartnerSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Partner
|
|
fields = "__all__"
|
|
|
|
|
|
class PartnerRepresentativeSerializer(serializers.ModelSerializer):
|
|
representative_name = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = PartnerRepresentative
|
|
fields = ["id", "representative", "partner", "representative_name"]
|
|
|
|
def get_representative_name(self, obj):
|
|
return f"{obj.representative.first_name} {obj.representative.last_name}"
|
|
|
|
|
|
class SchoolResponsibilitySerializer(serializers.ModelSerializer):
|
|
responsible_name = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = SchoolResponsibility
|
|
fields = ["id", "academic_year", "responsible", "school", "responsible_name"]
|
|
|
|
def get_responsible_name(self, obj):
|
|
return f"{obj.responsible.account.first_name} {obj.responsible.account.last_name}"
|
|
|