1
0
mirror of https://gitlab.com/animath/si/plateforme.git synced 2025-06-24 21:40:34 +02:00

Add API endpoint to get volunteers names and emails, for tournament organizers only, to easily add juries

Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
Emmy D'Anello
2024-03-23 11:47:42 +01:00
parent 0ebee1910b
commit 40aa2e520f
3 changed files with 29 additions and 3 deletions

View File

@ -1,10 +1,13 @@
# Copyright (C) 2020 by Animath
# SPDX-License-Identifier: GPL-3.0-or-later
from django.contrib.auth.models import User
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.viewsets import ModelViewSet
from rest_framework.filters import SearchFilter
from rest_framework.permissions import BasePermission, IsAuthenticated, SAFE_METHODS
from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet
from .serializers import PaymentSerializer, RegistrationSerializer
from .serializers import BasicUserSerializer, PaymentSerializer, RegistrationSerializer
from ..models import Payment, Registration
@ -20,3 +23,18 @@ class PaymentViewSet(ModelViewSet):
serializer_class = PaymentSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = ['registrations', 'grouped', 'amount', 'final', 'type', 'valid', ]
class IsTournamentOrganizer(BasePermission):
def has_permission(self, request, view):
reg = request.user.registration
return request.method in SAFE_METHODS and reg.is_volunteer and reg.organized_tournaments.exists()
class VolunteersViewSet(ReadOnlyModelViewSet):
queryset = User.objects.filter(registration__volunteerregistration__isnull=False)
serializer_class = BasicUserSerializer
permission_classes = [IsAuthenticated & IsTournamentOrganizer]
filter_backends = [DjangoFilterBackend, SearchFilter]
filterset_fields = ['first_name', 'last_name', 'email', ]
search_fields = ['$first_name', '$last_name', '$email', ]