mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-07-19 23:51:25 +02:00
API
This commit is contained in:
0
apps/family/api/__init__.py
Normal file
0
apps/family/api/__init__.py
Normal file
46
apps/family/api/serializers.py
Normal file
46
apps/family/api/serializers.py
Normal file
@ -0,0 +1,46 @@
|
||||
# Copyright (C) 2018-2025 by BDE ENS Paris-Saclay
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
from ..models import Family, FamilyMembership, Challenge, Achievement
|
||||
|
||||
|
||||
class FamilySerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
REST API Serializer for Family.
|
||||
The djangorestframework plugin will analyse the model `Family` and parse all fields in the API.
|
||||
"""
|
||||
class Meta:
|
||||
model = Family
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class FamilyMembershipSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
REST API Serializer for FamilyMembership.
|
||||
The djangorestframework plugin will analyse the model `FamilyMembership` and parse all fields in the API.
|
||||
"""
|
||||
class Meta:
|
||||
model = FamilyMembership
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class ChallengeSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
REST API Serializer for Challenge.
|
||||
The djangorestframework plugin will analyse the model `Challenge` and parse all fields in the API.
|
||||
"""
|
||||
class Meta:
|
||||
model = Challenge
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class AchievementSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
REST API Serializer for Achievement.
|
||||
The djangorestframework plugin will analyse the model `Achievement` and parse all fields in the API.
|
||||
"""
|
||||
class Meta:
|
||||
model = Achievement
|
||||
fields = '__all__'
|
14
apps/family/api/urls.py
Normal file
14
apps/family/api/urls.py
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2018-2025 by BDE ENS Paris-Saclay
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from .views import FamilyViewSet, FamilyMembershipViewSet, ChallengeViewSet, AchievementViewSet
|
||||
|
||||
|
||||
def register_family_urls(router, path):
|
||||
"""
|
||||
Configure router for Family REST API
|
||||
"""
|
||||
router.register(path + 'family', FamilyViewSet)
|
||||
router.register(path + 'familymembership', FamilyMembershipViewSet)
|
||||
router.register(path + 'challenge', ChallengeViewSet)
|
||||
router.register(path + 'achievement', AchievementViewSet)
|
61
apps/family/api/views.py
Normal file
61
apps/family/api/views.py
Normal file
@ -0,0 +1,61 @@
|
||||
# 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', ]
|
Reference in New Issue
Block a user