roosterwijs/backend/modules/leerplein/serializers.py

55 lines
2.1 KiB
Python

from rest_framework import serializers
from core.models import Groep, Persoon, Subgroep
from .models import Leerplein, SubgroepGroep
class LeerpleinSerializer(serializers.ModelSerializer):
groepen = serializers.PrimaryKeyRelatedField(
many=True, queryset=Groep.objects.all(), required=False
)
subgroepen = serializers.PrimaryKeyRelatedField(
many=True, queryset=Subgroep.objects.all(), required=False
)
leerlingen = serializers.PrimaryKeyRelatedField(
many=True, queryset=Persoon.objects.filter(rol="leerling"), required=False
)
medewerkers = serializers.PrimaryKeyRelatedField(
many=True, queryset=Persoon.objects.exclude(rol="leerling"), required=False
)
groepen_namen = serializers.SerializerMethodField()
subgroepen_namen = serializers.SerializerMethodField()
leerlingen_namen = serializers.SerializerMethodField()
medewerkers_namen = serializers.SerializerMethodField()
class Meta:
model = Leerplein
fields = [
"id", "naam", "omschrijving", "actief",
"groepen", "subgroepen", "leerlingen", "medewerkers",
"groepen_namen", "subgroepen_namen", "leerlingen_namen", "medewerkers_namen",
"aangemaakt_op",
]
read_only_fields = ["aangemaakt_op"]
def get_groepen_namen(self, obj):
return [{"id": g.id, "naam": g.naam} for g in obj.groepen.all()]
def get_subgroepen_namen(self, obj):
return [{"id": s.id, "naam": s.naam} for s in obj.subgroepen.all()]
def get_leerlingen_namen(self, obj):
return [{"id": p.id, "naam": p.volledige_naam} for p in obj.leerlingen.all()]
def get_medewerkers_namen(self, obj):
return [{"id": p.id, "naam": p.volledige_naam} for p in obj.medewerkers.all()]
class SubgroepGroepSerializer(serializers.ModelSerializer):
groep_naam = serializers.CharField(source="groep.naam", read_only=True)
subgroep_naam = serializers.CharField(source="subgroep.naam", read_only=True)
class Meta:
model = SubgroepGroep
fields = ["id", "groep", "groep_naam", "subgroep", "subgroep_naam"]