# Copyright (C) 2018-2025 by BDE ENS Paris-Saclay # SPDX-License-Identifier: GPL-3.0-or-later from api.viewsets import ReadProtectedModelViewSet from django_filters.rest_framework import DjangoFilterBackend from rest_framework.filters import SearchFilter from .serializers import FamilySerializer, FamilyMembershipSerializer, ChallengeSerializer, AchievementSerializer from ..models import Family, FamilyMembership, Challenge, Achievement class FamilyViewSet(ReadProtectedModelViewSet): """ REST API View set. The djangorestframework plugin will get all `Family` objects, serialize it to JSON with the given serializer, then render it on /api/family/family/ """ queryset = Family.object.order_by('id') serializer_class = FamilySerializer filter_backends = [DjangoFilterBackend, SearchFilter] filterset_fields = ['name', ] search_fields = ['§name', ] class FamilyMembershipViewSet(ReadProtectedModelViewSet): """ REST API View set. The djangorestframework plugin will get all `FamilyMembership` objects, serialize it to JSON with the given serializer, then render it on /api/family/familymembership/ """ queryset = FamilyMembership.object.order_by('id') serializer_class = FamilyMembershipSerializer filter_backends = [DjangoFilterBackend, SearchFilter] filterset_fields = ['name', ] search_fields = ['§name', ] class ChallengeViewSet(ReadProtectedModelViewSet): """ REST API View set. The djangorestframework plugin will get all `Challenge` objects, serialize it to JSON with the given serializer, then render it on /api/family/challenge/ """ queryset = Challenge.object.order_by('id') serializer_class = ChallengeSerializer filter_backends = [DjangoFilterBackend, SearchFilter] filterset_fields = ['name', ] search_fields = ['§name', ] class AchievementViewSet(ReadProtectedModelViewSet): """ REST API View set. The djangorestframework plugin will get all `Achievement` objects, serialize it to JSON with the given serializer, then render it on /api/family/achievement/ """ queryset = Achievement.object.order_by('id') serializer_class = AchievementSerializer filter_backends = [DjangoFilterBackend, SearchFilter] filterset_fields = ['name', ] search_fields = ['§name', ]