roosterwijs/backend/modules/leerplein/views.py
bes-r c845588e5e
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
Add roles modules audit logging and CI
2026-07-04 23:01:06 +02:00

39 lines
1.6 KiB
Python

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