from core.audit import AuditedModelViewSet from core.permissions import CoreDataPermission, linked_person, module_permission_class, user_role from .models import Leerplein, SubgroepGroep from .serializers import LeerpleinSerializer, SubgroepGroepSerializer LeerpleinModuleEnabled = module_permission_class("leerplein") class LeerpleinViewSet(AuditedModelViewSet): serializer_class = LeerpleinSerializer permission_classes = [CoreDataPermission, LeerpleinModuleEnabled] def get_queryset(self): qs = Leerplein.objects.prefetch_related("groepen", "subgroepen", "leerlingen").all() if user_role(self.request.user) in ("leerling", "ouder"): person = linked_person(self.request.user) if person is None: return qs.none() qs = qs.filter(leerlingen=person) if getattr(person, "groep_id", None): qs = qs | Leerplein.objects.filter(groepen=person.groep_id) qs = qs | Leerplein.objects.filter(subgroepen__leden=person) return qs.distinct() return qs class SubgroepGroepViewSet(AuditedModelViewSet): serializer_class = SubgroepGroepSerializer permission_classes = [CoreDataPermission, LeerpleinModuleEnabled] def get_queryset(self): qs = SubgroepGroep.objects.select_related("groep", "subgroep").all() groep = self.request.query_params.get("groep") if groep: qs = qs.filter(groep_id=groep) subgroep = self.request.query_params.get("subgroep") if subgroep: qs = qs.filter(subgroep_id=subgroep) return qs