76 lines
2.4 KiB
Python
76 lines
2.4 KiB
Python
|
|
from rest_framework import serializers
|
||
|
|
from .models import AcademicYear, Department, DepartmentHead, Specialty, Group, Student
|
||
|
|
|
||
|
|
class AcademicYearSerializer(serializers.ModelSerializer):
|
||
|
|
class Meta:
|
||
|
|
model = AcademicYear
|
||
|
|
fields = "__all__"
|
||
|
|
|
||
|
|
|
||
|
|
class DepartmentSerializer(serializers.ModelSerializer):
|
||
|
|
class Meta:
|
||
|
|
model = Department
|
||
|
|
fields = "__all__"
|
||
|
|
|
||
|
|
|
||
|
|
class DepartmentHeadSerializer(serializers.ModelSerializer):
|
||
|
|
head_name = serializers.SerializerMethodField()
|
||
|
|
|
||
|
|
class Meta:
|
||
|
|
model = DepartmentHead
|
||
|
|
fields = ["id", "department", "head", "head_name"]
|
||
|
|
|
||
|
|
def get_head_name(self, obj):
|
||
|
|
return f"{obj.head.first_name} {obj.head.last_name}"
|
||
|
|
|
||
|
|
|
||
|
|
class SpecialtySerializer(serializers.ModelSerializer):
|
||
|
|
class Meta:
|
||
|
|
model = Specialty
|
||
|
|
fields = "__all__"
|
||
|
|
|
||
|
|
|
||
|
|
class GroupSerializer(serializers.ModelSerializer):
|
||
|
|
curator_name = serializers.SerializerMethodField()
|
||
|
|
|
||
|
|
class Meta:
|
||
|
|
model = Group
|
||
|
|
fields = ["id", "name", "curator", "specialty", "curator_name"]
|
||
|
|
|
||
|
|
def get_curator_name(self, obj):
|
||
|
|
if obj.curator:
|
||
|
|
return f"{obj.curator.first_name} {obj.curator.last_name}"
|
||
|
|
return None
|
||
|
|
|
||
|
|
|
||
|
|
class StudentSerializer(serializers.ModelSerializer):
|
||
|
|
first_name = serializers.CharField(source="account.first_name")
|
||
|
|
last_name = serializers.CharField(source="account.last_name")
|
||
|
|
middle_name = serializers.CharField(source="account.middle_name")
|
||
|
|
phone = serializers.CharField(source="account.phone")
|
||
|
|
email = serializers.CharField(source="account.email")
|
||
|
|
|
||
|
|
class Meta:
|
||
|
|
model = Student
|
||
|
|
fields = [
|
||
|
|
"id",
|
||
|
|
"group",
|
||
|
|
"first_name",
|
||
|
|
"last_name",
|
||
|
|
"middle_name",
|
||
|
|
"phone",
|
||
|
|
"email",
|
||
|
|
]
|
||
|
|
|
||
|
|
def update(self, instance, validated_data):
|
||
|
|
account_data = validated_data.pop("account", {})
|
||
|
|
instance.account.first_name = account_data.get("first_name", instance.account.first_name)
|
||
|
|
instance.account.last_name = account_data.get("last_name", instance.account.last_name)
|
||
|
|
instance.account.middle_name = account_data.get("middle_name", instance.account.middle_name)
|
||
|
|
instance.account.phone = account_data.get("phone", instance.account.phone)
|
||
|
|
instance.account.email = account_data.get("email", instance.account.email)
|
||
|
|
instance.account.save()
|
||
|
|
return super().update(instance, validated_data)
|
||
|
|
|
||
|
|
|