2024-02-07 01:26:49 +00:00
|
|
|
# Copyright (C) 2018-2024 by BDE ENS Paris-Saclay
|
2020-03-18 13:42:35 +00:00
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
|
|
from django_filters.rest_framework import DjangoFilterBackend
|
2022-03-10 15:11:01 +00:00
|
|
|
from api.filters import RegexSafeSearchFilter
|
|
|
|
from api.viewsets import ReadOnlyProtectedModelViewSet
|
2020-12-22 11:42:54 +00:00
|
|
|
|
2020-07-25 17:40:30 +00:00
|
|
|
from .serializers import PermissionSerializer, RoleSerializer
|
|
|
|
from ..models import Permission, Role
|
2020-03-18 13:42:35 +00:00
|
|
|
|
|
|
|
|
|
|
|
class PermissionViewSet(ReadOnlyProtectedModelViewSet):
|
|
|
|
"""
|
|
|
|
REST API View set.
|
2020-04-02 14:06:58 +00:00
|
|
|
The djangorestframework plugin will get all `Permission` objects, serialize it to JSON with the given serializer,
|
|
|
|
then render it on /api/permission/permission/
|
2020-03-18 13:42:35 +00:00
|
|
|
"""
|
2020-12-23 13:54:21 +00:00
|
|
|
queryset = Permission.objects.order_by('id')
|
2020-03-18 13:42:35 +00:00
|
|
|
serializer_class = PermissionSerializer
|
2022-03-10 15:11:01 +00:00
|
|
|
filter_backends = [DjangoFilterBackend, RegexSafeSearchFilter]
|
2020-12-22 11:42:54 +00:00
|
|
|
filterset_fields = ['model', 'type', 'query', 'mask', 'field', 'permanent', ]
|
2024-07-18 11:51:56 +00:00
|
|
|
search_fields = ['$model__model', '$query', '$description', ]
|
2020-04-02 14:06:58 +00:00
|
|
|
|
|
|
|
|
2020-07-25 17:40:30 +00:00
|
|
|
class RoleViewSet(ReadOnlyProtectedModelViewSet):
|
2020-04-02 14:06:58 +00:00
|
|
|
"""
|
|
|
|
REST API View set.
|
|
|
|
The djangorestframework plugin will get all `RolePermission` objects, serialize it to JSON with the given serializer
|
|
|
|
then render it on /api/permission/roles/
|
|
|
|
"""
|
2020-12-23 13:54:21 +00:00
|
|
|
queryset = Role.objects.order_by('id')
|
2020-07-25 17:40:30 +00:00
|
|
|
serializer_class = RoleSerializer
|
2022-03-10 15:11:01 +00:00
|
|
|
filter_backends = [DjangoFilterBackend, RegexSafeSearchFilter]
|
2020-12-23 13:54:21 +00:00
|
|
|
filterset_fields = ['name', 'permissions', 'for_club', 'memberships__user', ]
|
2020-12-23 20:06:30 +00:00
|
|
|
search_fields = ['$name', '$for_club__name', ]
|