From 48880e7fd39859594b0ea816d315fbc4deb14db2 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Tue, 22 Dec 2020 13:11:01 +0100 Subject: [PATCH] More API filters for the wei app --- apps/wei/api/views.py | 55 +++++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/apps/wei/api/views.py b/apps/wei/api/views.py index aaa1f141..ccd4615a 100644 --- a/apps/wei/api/views.py +++ b/apps/wei/api/views.py @@ -1,7 +1,8 @@ # Copyright (C) 2018-2020 by BDE ENS Paris-Saclay # SPDX-License-Identifier: GPL-3.0-or-later + from django_filters.rest_framework import DjangoFilterBackend -from rest_framework.filters import SearchFilter +from rest_framework.filters import OrderingFilter, SearchFilter from api.viewsets import ReadProtectedModelViewSet from .serializers import WEIClubSerializer, BusSerializer, BusTeamSerializer, WEIRoleSerializer, \ @@ -17,9 +18,12 @@ class WEIClubViewSet(ReadProtectedModelViewSet): """ queryset = WEIClub.objects.all() serializer_class = WEIClubSerializer - filter_backends = [SearchFilter, DjangoFilterBackend] - search_fields = ['$name', ] - filterset_fields = ['name', 'year', ] + filter_backends = [DjangoFilterBackend, SearchFilter] + filterset_fields = ['name', 'year', 'date_start', 'date_end', 'email', 'note__alias__name', + 'note__alias__normalized_name', 'parent_club', 'parent_club__name', 'require_memberships', + 'membership_fee_paid', 'membership_fee_unpaid', 'membership_duration', 'membership_start', + 'membership_end', ] + search_fields = ['$name', '$email', '$note__alias__name', '$note__alias__normalized_name', ] class BusViewSet(ReadProtectedModelViewSet): @@ -30,9 +34,9 @@ class BusViewSet(ReadProtectedModelViewSet): """ queryset = Bus.objects serializer_class = BusSerializer - filter_backends = [SearchFilter, DjangoFilterBackend] - search_fields = ['$name', ] - filterset_fields = ['name', 'wei', ] + filter_backends = [DjangoFilterBackend, SearchFilter] + filterset_fields = ['name', 'wei', 'description', ] + search_fields = ['$name', '$wei__name', '$description', ] class BusTeamViewSet(ReadProtectedModelViewSet): @@ -43,9 +47,9 @@ class BusTeamViewSet(ReadProtectedModelViewSet): """ queryset = BusTeam.objects serializer_class = BusTeamSerializer - filter_backends = [SearchFilter, DjangoFilterBackend] - search_fields = ['$name', ] - filterset_fields = ['name', 'bus', 'bus__wei', ] + filter_backends = [DjangoFilterBackend, SearchFilter] + filterset_fields = ['name', 'bus', 'color', 'description', 'bus__wei', ] + search_fields = ['$name', '$bus__name', '$bus__wei__name', '$description', ] class WEIRoleViewSet(ReadProtectedModelViewSet): @@ -56,8 +60,9 @@ class WEIRoleViewSet(ReadProtectedModelViewSet): """ queryset = WEIRole.objects serializer_class = WEIRoleSerializer - filter_backends = [SearchFilter] - search_fields = ['$name', ] + filter_backends = [DjangoFilterBackend, SearchFilter] + filterset_fields = ['name', 'permissions', 'for_club', 'membership_set__user', ] + SearchFilter = ['$name', '$for_club__name', ] class WEIRegistrationViewSet(ReadProtectedModelViewSet): @@ -68,9 +73,16 @@ class WEIRegistrationViewSet(ReadProtectedModelViewSet): """ queryset = WEIRegistration.objects serializer_class = WEIRegistrationSerializer - filter_backends = [SearchFilter, DjangoFilterBackend] - search_fields = ['$user__username', ] - filterset_fields = ['user', 'wei', ] + filter_backends = [DjangoFilterBackend, SearchFilter] + filterset_fields = ['user', 'user__username', 'user__first_name', 'user__last_name', 'user__email', + 'user__note__alias__name', 'user__note__alias__normalized_name', 'wei', 'wei__name', + 'wei__email', 'wei__note__alias__name', 'wei__note__alias__normalized_name', 'wei__year', + 'soge_credit', 'caution_check', 'birth_date', 'gender', 'clothing_cut', 'clothing_size', + 'first_year', 'emergency_contact_name', 'emergency_contact_phone', ] + search_fields = ['$user__username', '$user__first_name', '$user__last_name', '$user__email', + '$user__note__alias__name', '$user__note__alias__normalized_name', '$wei__name', + '$wei__email', '$wei__note__alias__name', '$wei__note__alias__normalized_name', + '$health_issues', '$emergency_contact_name', '$emergency_contact_phone', ] class WEIMembershipViewSet(ReadProtectedModelViewSet): @@ -81,6 +93,13 @@ class WEIMembershipViewSet(ReadProtectedModelViewSet): """ queryset = WEIMembership.objects serializer_class = WEIMembershipSerializer - filter_backends = [SearchFilter, DjangoFilterBackend] - search_fields = ['$user__username', '$bus__name', '$team__name', ] - filterset_fields = ['user', 'club', 'bus', 'team', ] + filter_backends = [DjangoFilterBackend, OrderingFilter, SearchFilter] + filterset_fields = ['club__name', 'club__email', 'club__note__alias__name', 'club__note__alias__normalized_name', + 'user__username', 'user__last_name', 'user__first_name', 'user__email', + 'user__note__alias__name', 'user__note__alias__normalized_name', 'date_start', 'date_end', + 'fee', 'roles', 'bus', 'bus__name', 'team', 'team__name', 'registration', ] + ordering_fields = ['id', 'date_start', 'date_end', ] + search_fields = ['$club__name', '$club__email', '$club__note__alias__name', '$club__note__alias__normalized_name', + '$user__username', '$user__last_name', '$user__first_name', '$user__email', + '$user__note__alias__name', '$user__note__alias__normalized_name', '$roles__name', + '$bus__name', '$team__name', ]