
* move RAC to open source * move web out of enterprise Signed-off-by: Jens Langhammer <jens@goauthentik.io> * remove enterprise license requirements from RAC * format Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io> Co-authored-by: Jens Langhammer <jens@goauthentik.io>
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
"""RAC Provider API Views"""
|
|
|
|
from django_filters.filters import AllValuesMultipleFilter
|
|
from django_filters.filterset import FilterSet
|
|
from drf_spectacular.types import OpenApiTypes
|
|
from drf_spectacular.utils import extend_schema_field
|
|
from rest_framework.fields import CharField
|
|
from rest_framework.viewsets import ModelViewSet
|
|
|
|
from authentik.core.api.property_mappings import PropertyMappingSerializer
|
|
from authentik.core.api.used_by import UsedByMixin
|
|
from authentik.core.api.utils import JSONDictField
|
|
from authentik.providers.rac.models import RACPropertyMapping
|
|
|
|
|
|
class RACPropertyMappingSerializer(PropertyMappingSerializer):
|
|
"""RACPropertyMapping Serializer"""
|
|
|
|
static_settings = JSONDictField()
|
|
expression = CharField(allow_blank=True, required=False)
|
|
|
|
def validate_expression(self, expression: str) -> str:
|
|
"""Test Syntax"""
|
|
if expression == "":
|
|
return expression
|
|
return super().validate_expression(expression)
|
|
|
|
class Meta:
|
|
model = RACPropertyMapping
|
|
fields = PropertyMappingSerializer.Meta.fields + ["static_settings"]
|
|
|
|
|
|
class RACPropertyMappingFilter(FilterSet):
|
|
"""Filter for RACPropertyMapping"""
|
|
|
|
managed = extend_schema_field(OpenApiTypes.STR)(AllValuesMultipleFilter(field_name="managed"))
|
|
|
|
class Meta:
|
|
model = RACPropertyMapping
|
|
fields = ["name", "managed"]
|
|
|
|
|
|
class RACPropertyMappingViewSet(UsedByMixin, ModelViewSet):
|
|
"""RACPropertyMapping Viewset"""
|
|
|
|
queryset = RACPropertyMapping.objects.all()
|
|
serializer_class = RACPropertyMappingSerializer
|
|
search_fields = ["name"]
|
|
ordering = ["name"]
|
|
filterset_class = RACPropertyMappingFilter
|