mirror of
https://github.com/goauthentik/authentik.git
synced 2026-06-17 19:09:11 +03:00
5108be6554
* api: cleanup choice enums Signed-off-by: Jens Langhammer <jens@goauthentik.io> * more names Signed-off-by: Jens Langhammer <jens@goauthentik.io> * unrelated Signed-off-by: Jens Langhammer <jens@goauthentik.io> * rework Signed-off-by: Jens Langhammer <jens@goauthentik.io> * gen Signed-off-by: Jens Langhammer <jens@goauthentik.io> * update web Signed-off-by: Jens Langhammer <jens@goauthentik.io> * format Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix? Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix tests Signed-off-by: Jens Langhammer <jens@goauthentik.io> * try custom template Signed-off-by: Jens Langhammer <jens@goauthentik.io> * sed it instead? Signed-off-by: Jens Langhammer <jens@goauthentik.io> * correct sed Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
"""Meta API"""
|
|
|
|
from drf_spectacular.utils import extend_schema
|
|
from rest_framework.fields import CharField
|
|
from rest_framework.permissions import IsAuthenticated
|
|
from rest_framework.request import Request
|
|
from rest_framework.response import Response
|
|
from rest_framework.viewsets import ViewSet
|
|
|
|
from authentik.core.api.utils import PassiveSerializer
|
|
from authentik.lib.api import Models
|
|
from authentik.lib.utils.reflection import get_apps
|
|
|
|
|
|
class AppSerializer(PassiveSerializer):
|
|
"""Serialize Application info"""
|
|
|
|
name = CharField()
|
|
label = CharField()
|
|
|
|
|
|
class AppsViewSet(ViewSet):
|
|
"""Read-only view list all installed apps"""
|
|
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
@extend_schema(responses={200: AppSerializer(many=True)})
|
|
def list(self, request: Request) -> Response:
|
|
"""Read-only view list all installed apps"""
|
|
data = []
|
|
for app in sorted(get_apps(), key=lambda app: app.name):
|
|
data.append({"name": app.name, "label": app.verbose_name})
|
|
return Response(AppSerializer(data, many=True).data)
|
|
|
|
|
|
class ModelViewSet(ViewSet):
|
|
"""Read-only view list all installed models"""
|
|
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
@extend_schema(responses={200: AppSerializer(many=True)})
|
|
def list(self, request: Request) -> Response:
|
|
"""Read-only view list all installed models"""
|
|
data = []
|
|
for name, label in Models.choices:
|
|
data.append({"name": name, "label": label})
|
|
return Response(AppSerializer(data, many=True).data)
|