@@ -242,6 +242,19 @@ class PrefetchDojoModelViewSet(
242242 pass
243243
244244
245+ class DeprecationNoticeMixin :
246+
247+ deprecated : bool | None = None
248+ end_of_life_date : datetime | None = None
249+
250+ def finalize_response (self , request , response , * args , ** kwargs ):
251+ if self .deprecated is not None :
252+ response ["X-Deprecated" ] = self .deprecated
253+ if self .end_of_life_date is not None :
254+ response ["X-End-Of-Life-Date" ] = self .end_of_life_date .isoformat ()
255+ return super ().finalize_response (request , response , * args , ** kwargs )
256+
257+
245258# Authorization: authenticated users
246259class RoleViewSet (viewsets .ReadOnlyModelViewSet ):
247260 serializer_class = serializers .RoleSerializer
@@ -3171,7 +3184,10 @@ def get_queryset(self):
31713184class QuestionnaireQuestionViewSet (
31723185 viewsets .ReadOnlyModelViewSet ,
31733186 dojo_mixins .QuestionSubClassFieldsMixin ,
3187+ DeprecationNoticeMixin ,
31743188):
3189+ deprecated = True
3190+ end_of_life_date = datetime (2026 , 6 , 1 )
31753191 serializer_class = serializers .QuestionnaireQuestionSerializer
31763192 queryset = Question .objects .none ()
31773193 filter_backends = (DjangoFilterBackend ,)
@@ -3183,11 +3199,28 @@ class QuestionnaireQuestionViewSet(
31833199 def get_queryset (self ):
31843200 return Question .objects .all ().order_by ("id" )
31853201
3202+ @extend_schema (
3203+ deprecated = True ,
3204+ description = "This endpoint is deprecated and will be removed on 2026-06-01." ,
3205+ )
3206+ def list (self , request , * args , ** kwargs ):
3207+ return super ().list (request , * args , ** kwargs )
3208+
3209+ @extend_schema (
3210+ deprecated = True ,
3211+ description = "This endpoint is deprecated and will be removed on 2026-06-01." ,
3212+ )
3213+ def retrieve (self , request , * args , ** kwargs ):
3214+ return super ().retrieve (request , * args , ** kwargs )
3215+
31863216
31873217class QuestionnaireAnswerViewSet (
31883218 viewsets .ReadOnlyModelViewSet ,
31893219 dojo_mixins .AnswerSubClassFieldsMixin ,
3220+ DeprecationNoticeMixin ,
31903221):
3222+ deprecated = True
3223+ end_of_life_date = datetime (2026 , 6 , 1 )
31913224 serializer_class = serializers .QuestionnaireAnswerSerializer
31923225 queryset = Answer .objects .none ()
31933226 filter_backends = (DjangoFilterBackend ,)
@@ -3199,10 +3232,27 @@ class QuestionnaireAnswerViewSet(
31993232 def get_queryset (self ):
32003233 return Answer .objects .all ().order_by ("id" )
32013234
3235+ @extend_schema (
3236+ deprecated = True ,
3237+ description = "This endpoint is deprecated and will be removed on 2026-06-01." ,
3238+ )
3239+ def list (self , request , * args , ** kwargs ):
3240+ return super ().list (request , * args , ** kwargs )
3241+
3242+ @extend_schema (
3243+ deprecated = True ,
3244+ description = "This endpoint is deprecated and will be removed on 2026-06-01." ,
3245+ )
3246+ def retrieve (self , request , * args , ** kwargs ):
3247+ return super ().retrieve (request , * args , ** kwargs )
3248+
32023249
32033250class QuestionnaireGeneralSurveyViewSet (
32043251 viewsets .ReadOnlyModelViewSet ,
3252+ DeprecationNoticeMixin ,
32053253):
3254+ deprecated = True
3255+ end_of_life_date = datetime (2026 , 6 , 1 )
32063256 serializer_class = serializers .QuestionnaireGeneralSurveySerializer
32073257 queryset = General_Survey .objects .none ()
32083258 filter_backends = (DjangoFilterBackend ,)
@@ -3214,10 +3264,27 @@ class QuestionnaireGeneralSurveyViewSet(
32143264 def get_queryset (self ):
32153265 return General_Survey .objects .all ().order_by ("id" )
32163266
3267+ @extend_schema (
3268+ deprecated = True ,
3269+ description = "This endpoint is deprecated and will be removed on 2026-06-01." ,
3270+ )
3271+ def list (self , request , * args , ** kwargs ):
3272+ return super ().list (request , * args , ** kwargs )
3273+
3274+ @extend_schema (
3275+ deprecated = True ,
3276+ description = "This endpoint is deprecated and will be removed on 2026-06-01." ,
3277+ )
3278+ def retrieve (self , request , * args , ** kwargs ):
3279+ return super ().retrieve (request , * args , ** kwargs )
3280+
32173281
32183282class QuestionnaireEngagementSurveyViewSet (
32193283 viewsets .ReadOnlyModelViewSet ,
3284+ DeprecationNoticeMixin ,
32203285):
3286+ deprecated = True
3287+ end_of_life_date = datetime (2026 , 6 , 1 )
32213288 serializer_class = serializers .QuestionnaireEngagementSurveySerializer
32223289 queryset = Engagement_Survey .objects .none ()
32233290 filter_backends = (DjangoFilterBackend ,)
@@ -3230,13 +3297,29 @@ def get_queryset(self):
32303297 return Engagement_Survey .objects .all ().order_by ("id" )
32313298
32323299 @extend_schema (
3233- request = OpenApiTypes .NONE ,
3234- parameters = [
3235- OpenApiParameter (
3236- "engagement_id" , OpenApiTypes .INT , OpenApiParameter .PATH ,
3237- ),
3238- ],
3239- responses = {status .HTTP_200_OK : serializers .QuestionnaireAnsweredSurveySerializer },
3300+ deprecated = True ,
3301+ description = "This endpoint is deprecated and will be removed on 2026-06-01." ,
3302+ )
3303+ def list (self , request , * args , ** kwargs ):
3304+ return super ().list (request , * args , ** kwargs )
3305+
3306+ @extend_schema (
3307+ deprecated = True ,
3308+ description = "This endpoint is deprecated and will be removed on 2026-06-01." ,
3309+ )
3310+ def retrieve (self , request , * args , ** kwargs ):
3311+ return super ().retrieve (request , * args , ** kwargs )
3312+
3313+ @extend_schema (
3314+ deprecated = True ,
3315+ description = "This endpoint is deprecated and will be removed on 2026-06-01." ,
3316+ request = OpenApiTypes .NONE ,
3317+ parameters = [
3318+ OpenApiParameter (
3319+ "engagement_id" , OpenApiTypes .INT , OpenApiParameter .PATH ,
3320+ ),
3321+ ],
3322+ responses = {status .HTTP_200_OK : serializers .QuestionnaireAnsweredSurveySerializer },
32403323 )
32413324 @action (
32423325 detail = True , methods = ["post" ], url_path = r"link_engagement/(?P<engagement_id>\d+)" ,
@@ -3258,7 +3341,10 @@ class QuestionnaireAnsweredSurveyViewSet(
32583341 prefetch .PrefetchListMixin ,
32593342 prefetch .PrefetchRetrieveMixin ,
32603343 viewsets .ReadOnlyModelViewSet ,
3344+ DeprecationNoticeMixin ,
32613345):
3346+ deprecated = True
3347+ end_of_life_date = datetime (2026 , 6 , 1 )
32623348 serializer_class = serializers .QuestionnaireAnsweredSurveySerializer
32633349 queryset = Answered_Survey .objects .none ()
32643350 filter_backends = (DjangoFilterBackend ,)
@@ -3270,6 +3356,20 @@ class QuestionnaireAnsweredSurveyViewSet(
32703356 def get_queryset (self ):
32713357 return Answered_Survey .objects .all ().order_by ("id" )
32723358
3359+ @extend_schema (
3360+ deprecated = True ,
3361+ description = "This endpoint is deprecated and will be removed on 2026-06-01." ,
3362+ )
3363+ def list (self , request , * args , ** kwargs ):
3364+ return super ().list (request , * args , ** kwargs )
3365+
3366+ @extend_schema (
3367+ deprecated = True ,
3368+ description = "This endpoint is deprecated and will be removed on 2026-06-01." ,
3369+ )
3370+ def retrieve (self , request , * args , ** kwargs ):
3371+ return super ().retrieve (request , * args , ** kwargs )
3372+
32733373
32743374# Authorization: configuration
32753375class AnnouncementViewSet (
0 commit comments