55 lines
2.1 KiB
Python
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"]
|