nk20/apps/activity/api/views.py

70 lines
3.3 KiB
Python
Raw Normal View History

# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
2020-02-06 22:49:33 +00:00
# SPDX-License-Identifier: GPL-3.0-or-later
2020-03-11 10:15:03 +00:00
from django_filters.rest_framework import DjangoFilterBackend
from api.filters import RegexSafeSearchFilter
from api.viewsets import ReadProtectedModelViewSet
2020-03-20 01:14:43 +00:00
from .serializers import ActivitySerializer, ActivityTypeSerializer, EntrySerializer, GuestSerializer
from ..models import Activity, ActivityType, Entry, Guest
2020-02-06 22:49:33 +00:00
class ActivityTypeViewSet(ReadProtectedModelViewSet):
2020-02-06 23:29:04 +00:00
"""
REST API View set.
The djangorestframework plugin will get all `ActivityType` objects, serialize it to JSON with the given serializer,
then render it on /api/activity/type/
"""
queryset = ActivityType.objects.order_by('id')
2020-02-06 22:49:33 +00:00
serializer_class = ActivityTypeSerializer
2020-03-11 10:15:03 +00:00
filter_backends = [DjangoFilterBackend]
2020-12-22 02:18:43 +00:00
filterset_fields = ['name', 'manage_entries', 'can_invite', 'guest_entry_fee', ]
2020-02-06 22:49:33 +00:00
class ActivityViewSet(ReadProtectedModelViewSet):
2020-02-06 23:29:04 +00:00
"""
REST API View set.
The djangorestframework plugin will get all `Activity` objects, serialize it to JSON with the given serializer,
then render it on /api/activity/activity/
"""
queryset = Activity.objects.order_by('id')
2020-02-06 22:49:33 +00:00
serializer_class = ActivitySerializer
filter_backends = [DjangoFilterBackend, RegexSafeSearchFilter]
2020-12-22 02:18:43 +00:00
filterset_fields = ['name', 'description', 'activity_type', 'location', 'creater', 'organizer', 'attendees_club',
'date_start', 'date_end', 'valid', 'open', ]
search_fields = ['$name', '$description', '$location', '$creater__last_name', '$creater__first_name',
'$creater__email', '$creater__note__alias__name', '$creater__note__alias__normalized_name',
'$organizer__name', '$organizer__email', '$organizer__note__alias__name',
'$organizer__note__alias__normalized_name', '$attendees_club__name', '$attendees_club__email',
'$attendees_club__note__alias__name', '$attendees_club__note__alias__normalized_name', ]
2020-02-06 22:49:33 +00:00
class GuestViewSet(ReadProtectedModelViewSet):
2020-02-06 23:29:04 +00:00
"""
REST API View set.
The djangorestframework plugin will get all `Guest` objects, serialize it to JSON with the given serializer,
then render it on /api/activity/guest/
"""
queryset = Guest.objects.order_by('id')
serializer_class = GuestSerializer
filter_backends = [DjangoFilterBackend, RegexSafeSearchFilter]
2020-12-22 02:18:43 +00:00
filterset_fields = ['activity', 'activity__name', 'last_name', 'first_name', 'inviter', 'inviter__alias__name',
'inviter__alias__normalized_name', ]
search_fields = ['$activity__name', '$last_name', '$first_name', '$inviter__user__email', '$inviter__alias__name',
'$inviter__alias__normalized_name', ]
2020-03-28 12:38:31 +00:00
class EntryViewSet(ReadProtectedModelViewSet):
"""
REST API View set.
The djangorestframework plugin will get all `Entry` objects, serialize it to JSON with the given serializer,
then render it on /api/activity/entry/
"""
queryset = Entry.objects.order_by('id')
2020-03-28 12:38:31 +00:00
serializer_class = EntrySerializer
filter_backends = [DjangoFilterBackend, RegexSafeSearchFilter]
2020-12-22 02:18:43 +00:00
filterset_fields = ['activity', 'time', 'note', 'guest', ]
search_fields = ['$activity__name', '$note__user__email', '$note__alias__name', '$note__alias__normalized_name',
'$guest__last_name', '$guest__first_name', ]