from django.utils.decorators import method_decorator from drf_spectacular.utils import extend_schema from rest_framework import generics from rest_framework.permissions import IsAuthenticated from .models import SessionTimeoutPolicy from .serializers import SessionTimeoutPolicySerializer @method_decorator( name='get', decorator=extend_schema( tags=['Session Policy'], summary='Retrieve Session Policy', description='Retrieve session timeout policy for the currently active organization.', responses={ 200: SessionTimeoutPolicySerializer, }, extensions={ 'x-fern-sdk-group-name': 'session_policy', 'x-fern-sdk-method-name': 'get', 'x-fern-audiences': ['public'], }, ), ) @method_decorator( name='patch', decorator=extend_schema( tags=['Session Policy'], summary='Update Session Policy', description='Update session timeout policy for the currently active organization.', request=SessionTimeoutPolicySerializer, responses={ 200: SessionTimeoutPolicySerializer, }, extensions={ 'x-fern-sdk-group-name': 'session_policy', 'x-fern-sdk-method-name': 'update', 'x-fern-audiences': ['public'], }, ), ) class SessionTimeoutPolicyView(generics.RetrieveUpdateAPIView): """ API endpoint for retrieving and updating organization's session timeout policy """ serializer_class = SessionTimeoutPolicySerializer permission_classes = [IsAuthenticated] http_method_names = ['get', 'patch'] # Explicitly specify allowed methods def get_object(self): # Get the organization from the request org = self.request.user.active_organization # Get or create the session policy for the organization policy, _ = SessionTimeoutPolicy.objects.get_or_create(organization=org) return policy