"""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())