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
|