@@ -283,10 +283,42 @@ class ReportViewSet(ReadWriteOnlyModelViewSet):
283283* report_id: The 4-digit report ID.
284284* type: The report type (adult, site, or mission).
285285 """
286- queryset = Report .objects .all ()
286+ queryset = Report .objects .all (). prefetch_related ( "responses" )
287287 serializer_class = ReportSerializer
288288 filter_fields = ('user' , 'version_number' , 'report_id' , 'type' )
289289
290+ def get_queryset (self ):
291+ queryset = super ().get_queryset ()
292+
293+ # Get the filters from the request
294+ is_deleted = self .request .query_params .get ('is_deleted' , None )
295+ is_last_version = self .request .query_params .get ('is_last_version' , None )
296+
297+ # Apply additional filters if provided
298+ if is_deleted is not None :
299+ if is_deleted .lower () not in ['true' , 'false' ]:
300+ raise ParseError ("Invalid value for 'is_deleted'. It should be 'true', 'false', or not provided." )
301+
302+ if is_deleted .lower () == 'true' :
303+ # Filter queryset to include only deleted records
304+ queryset = queryset .deleted (state = True )
305+ elif is_deleted .lower () == 'false' :
306+ # Filter queryset to exclude deleted records
307+ queryset = queryset .deleted (state = False )
308+
309+ if is_last_version is not None :
310+ if is_last_version .lower () not in ['true' , 'false' ]:
311+ raise ParseError ("Invalid value for 'is_last_version'. It should be 'true', 'false', or not provided." )
312+
313+ if is_last_version .lower () == 'true' :
314+ # Filter queryset to include only deleted records
315+ queryset = queryset .last_version_of_each (state = True )
316+ elif is_last_version .lower () == 'false' :
317+ # Filter queryset to exclude deleted records
318+ queryset = queryset .last_version_of_each (state = False )
319+
320+ return queryset
321+
290322
291323# For production version, substitute WriteOnlyModelViewSet
292324class PhotoViewSet (ReadWriteOnlyModelViewSet ):
0 commit comments