@@ -59,7 +59,7 @@ def filter_dref_queryset_by_user_access(user, queryset):
5959 ]
6060 if len (dref_admin_regions_id ):
6161 return queryset .filter (
62- models .Q (created_by = user ) | models .Q (country__region__in = dref_admin_regions_id )
62+ models .Q (created_by = user ) | models .Q (country__region__in = dref_admin_regions_id ) | models . Q ( users = user )
6363 ).distinct ()
6464 # Normal access
6565 return queryset .model .get_for (user )
@@ -241,32 +241,7 @@ class CompletedDrefOperationsViewSet(viewsets.ReadOnlyModelViewSet):
241241 def get_queryset (self ):
242242 user = self .request .user
243243 queryset = DrefFinalReport .objects .filter (is_published = True ).order_by ("-created_at" ).distinct ()
244- if user .is_superuser :
245- return queryset
246- elif not user .is_superuser :
247- regions = [0 , 1 , 2 , 3 , 4 ]
248- final_report_list = []
249- for region in regions :
250- codename = f"dref_region_admin_{ region } "
251- if Permission .objects .filter (group__user = user , codename = codename ).exists ():
252- final_report = (
253- DrefFinalReport .objects .prefetch_related (
254- "dref__planned_interventions" ,
255- "dref__needs_identified" ,
256- )
257- .filter (country__region = region , is_published = True )
258- .distinct ()
259- )
260- final_report_list .append (final_report )
261- final = []
262- for final_report in final_report_list :
263- id = list (final_report .values_list ('id' , flat = True ))
264- new_dref = DrefFinalReport .objects .filter (id__in = id ).first ()
265- final .append (new_dref .id )
266- if len (final ):
267- return DrefFinalReport .objects .filter (id__in = final , is_published = True ).order_by ('-created_at' )
268- else :
269- return DrefFinalReport .get_for (user ).filter (is_published = True )
244+ return filter_dref_queryset_by_user_access (user , queryset )
270245
271246
272247class ActiveDrefOperationsViewSet (viewsets .ReadOnlyModelViewSet ):
@@ -344,7 +319,7 @@ def get_queryset(self):
344319 for dref in annoatated_drefs :
345320 new_dref = Dref .objects .get (id = dref .id )
346321 dref_list .append (new_dref .id )
347- return Dref .objects .filter (id__in = dref_list , is_active = True ).order_by ("-created_at" )
322+ return Dref .objects .filter (( models . Q ( id__in = dref_list ) | models . Q ( created_by = user ) | models . Q ( users = user )) , is_active = True ). distinct ( ).order_by ("-created_at" )
348323 elif not user .is_superuser :
349324 # get current user dref regions
350325 regions = [0 , 1 , 2 , 3 , 4 ]
@@ -428,7 +403,7 @@ def get_queryset(self):
428403 new_dref = Dref .objects .get (id = dref .id )
429404 dref_list .append (new_dref .id )
430405 if len (dref_list ):
431- return Dref .objects .filter (id__in = dref_list , is_active = True ).order_by ("-created_at" )
406+ return Dref .objects .filter (( models . Q ( id__in = dref_list ) | models . Q ( created_by = user ) | models . Q ( users = user )) , is_active = True ). distinct ( ).order_by ("-created_at" )
432407 else :
433408 dref = Dref .get_for (user )
434409 dref_op_update = DrefOperationalUpdate .get_for (user )
0 commit comments