39 lines
1.6 KiB
Python
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
|