@@ -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