"""Provide pi simulation results.""" from rest_framework.decorators import action from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from rest_framework.viewsets import ReadOnlyModelViewSet from pi.models import PiLog from pi.serializers import PiLogSerializer class PiLogViewSet(ReadOnlyModelViewSet): """Provide list and detail actions for pi simulation log entries.""" queryset = PiLog.objects.all() serializer_class = PiLogSerializer permission_classes = [IsAuthenticated] @action(detail=False, methods=['post']) def simulate(self, request): """Run one simulation of the pi estimator.""" simulation, _, _ = PiLog.objects.simulate() return Response(self.get_serializer(simulation).data)