roosterwijs/backend/plugins/views.py

32 lines
1.2 KiB
Python

"""API voor het plugin-framework: modules opvragen en aan/uit zetten."""
from rest_framework import status
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAdminUser
from rest_framework.response import Response
from . import services
@api_view(["GET"])
def module_list(request):
"""Alle modules met metadata en actuele aan/uit-status."""
services.sync_states()
return Response(services.describe_all())
@api_view(["POST"])
@permission_classes([IsAdminUser])
def module_set_state(request, key: str):
"""Zet één module aan of uit (alleen beheerders). Body: {"enabled": true|false}."""
enabled = request.data.get("enabled")
# Expliciet een echte boolean eisen: bool("false") zou True zijn.
if not isinstance(enabled, bool):
return Response(
{"detail": "Veld 'enabled' moet true of false zijn."},
status=status.HTTP_400_BAD_REQUEST,
)
try:
services.set_enabled(key, enabled)
except services.ModuleError as exc:
return Response({"detail": str(exc)}, status=status.HTTP_400_BAD_REQUEST)
return Response(services.describe_all())