@@ -293,12 +293,49 @@ def get_queryset(self):
293293 .filter (dref__is_final_report_created = False )
294294 .distinct ()
295295 )
296+ result_list = sorted (chain (dref , dref_op_update , dref_final_report ), key = attrgetter ("created_at" ), reverse = True )
297+ dref_list = []
298+ for data in result_list :
299+ if data .__class__ .__name__ == "DrefFinalReport" :
300+ final_report = DrefFinalReport .objects .get (id = data .id )
301+ dref_list .append (final_report )
302+ elif data .__class__ .__name__ == "DrefOperationalUpdate" :
303+ operational_update = DrefOperationalUpdate .objects .get (id = data .id )
304+ dref_list .append (operational_update )
305+ elif data .__class__ .__name__ == "Dref" :
306+ dref = Dref .objects .get (id = data .id )
307+ dref_list .append (dref )
308+ # iterate over the list and get the dref from that
309+ # check the dref in the new list if exists
310+ # annotated dref here
311+ annoatated_drefs = []
312+ for dref in dref_list :
313+ if dref .__class__ .__name__ == "DrefOperationalUpdate" :
314+ # annotate the dref and other operational update for that dref
315+ operational_update = DrefOperationalUpdate .objects .get (id = dref .id )
316+ dref_object = Dref .objects .get (drefoperationalupdate = operational_update .id )
317+ if dref_object not in annoatated_drefs :
318+ annoatated_drefs .append (dref_object )
319+ elif dref .__class__ .__name__ == "Dref" :
320+ dref_object = Dref .objects .get (id = dref .id )
321+ if dref_object not in annoatated_drefs :
322+ annoatated_drefs .append (dref_object )
323+ elif dref .__class__ .__name__ == "DrefFinalReport" :
324+ final_report = DrefFinalReport .objects .get (id = dref .id )
325+ dref_object = Dref .objects .get (dreffinalreport = final_report .id )
326+ if dref_object not in annoatated_drefs :
327+ annoatated_drefs .append (dref_object )
328+ dref_list = []
329+ for dref in annoatated_drefs :
330+ new_dref = Dref .objects .get (id = dref .id )
331+ dref_list .append (new_dref .id )
332+ return Dref .objects .filter (id__in = dref_list ).order_by ("-created_at" )
296333 else :
297334 # get current user dref regions
298335 regions = [0 , 1 , 2 , 3 , 4 ]
299336 for region in regions :
300337 codename = f"dref_region_admin_{ region } "
301- if Permission .objects .filter (user = user , codename = codename ).exists ():
338+ if Permission .objects .filter (group__user = user , codename = codename ).exists ():
302339 dref = (
303340 Dref .objects .prefetch_related (
304341 "planned_interventions" , "needs_identified" , "national_society_actions" , "users"
@@ -336,47 +373,85 @@ def get_queryset(self):
336373 .filter (country__region = region , dref__is_final_report_created = False )
337374 .distinct ()
338375 )
376+ result_list = sorted (chain (dref , dref_op_update , dref_final_report ), key = attrgetter ("created_at" ), reverse = True )
377+ dref_list = []
378+ for data in result_list :
379+ if data .__class__ .__name__ == "DrefFinalReport" :
380+ final_report = DrefFinalReport .objects .get (id = data .id )
381+ dref_list .append (final_report )
382+ elif data .__class__ .__name__ == "DrefOperationalUpdate" :
383+ operational_update = DrefOperationalUpdate .objects .get (id = data .id )
384+ dref_list .append (operational_update )
385+ elif data .__class__ .__name__ == "Dref" :
386+ dref = Dref .objects .get (id = data .id )
387+ dref_list .append (dref )
388+ # iterate over the list and get the dref from that
389+ # check the dref in the new list if exists
390+ # annotated dref here
391+ annoatated_drefs = []
392+ for dref in dref_list :
393+ if dref .__class__ .__name__ == "DrefOperationalUpdate" :
394+ # annotate the dref and other operational update for that dref
395+ operational_update = DrefOperationalUpdate .objects .get (id = dref .id )
396+ dref_object = Dref .objects .get (drefoperationalupdate = operational_update .id )
397+ if dref_object not in annoatated_drefs :
398+ annoatated_drefs .append (dref_object )
399+ elif dref .__class__ .__name__ == "Dref" :
400+ dref_object = Dref .objects .get (id = dref .id )
401+ if dref_object not in annoatated_drefs :
402+ annoatated_drefs .append (dref_object )
403+ elif dref .__class__ .__name__ == "DrefFinalReport" :
404+ final_report = DrefFinalReport .objects .get (id = dref .id )
405+ dref_object = Dref .objects .get (dreffinalreport = final_report .id )
406+ if dref_object not in annoatated_drefs :
407+ annoatated_drefs .append (dref_object )
408+ dref_list = []
409+ for dref in annoatated_drefs :
410+ new_dref = Dref .objects .get (id = dref .id )
411+ dref_list .append (new_dref .id )
412+ return Dref .objects .filter (id__in = dref_list ).order_by ("-created_at" )
339413 else :
340414 dref = Dref .get_for (user ).filter (dref__is_final_report_created = False )
341415 dref_op_update = DrefOperationalUpdate .get_for (user ).filter (dref__is_final_report_created = False )
342416 dref_final_report = DrefFinalReport .get_for (user ).filter (dref__is_final_report_created = False )
343- result_list = sorted (chain (dref , dref_op_update , dref_final_report ), key = attrgetter ("created_at" ), reverse = True )
344- dref_list = []
345- for data in result_list :
346- if data .__class__ .__name__ == "DrefFinalReport" :
347- final_report = DrefFinalReport .objects .get (id = data .id )
348- dref_list .append (final_report )
349- elif data .__class__ .__name__ == "DrefOperationalUpdate" :
350- operational_update = DrefOperationalUpdate .objects .get (id = data .id )
351- dref_list .append (operational_update )
352- elif data .__class__ .__name__ == "Dref" :
353- dref = Dref .objects .get (id = data .id )
354- dref_list .append (dref )
355- # iterate over the list and get the dref from that
356- # check the dref in the new list if exists
357- # annotated dref here
358- annoatated_drefs = []
359- for dref in dref_list :
360- if dref .__class__ .__name__ == "DrefOperationalUpdate" :
361- # annotate the dref and other operational update for that dref
362- operational_update = DrefOperationalUpdate .objects .get (id = dref .id )
363- dref_object = Dref .objects .get (drefoperationalupdate = operational_update .id )
364- if dref_object not in annoatated_drefs :
365- annoatated_drefs .append (dref_object )
366- elif dref .__class__ .__name__ == "Dref" :
367- dref_object = Dref .objects .get (id = dref .id )
368- if dref_object not in annoatated_drefs :
369- annoatated_drefs .append (dref_object )
370- elif dref .__class__ .__name__ == "DrefFinalReport" :
371- final_report = DrefFinalReport .objects .get (id = dref .id )
372- dref_object = Dref .objects .get (dreffinalreport = final_report .id )
373- if dref_object not in annoatated_drefs :
374- annoatated_drefs .append (dref_object )
375- dref_list = []
376- for dref in annoatated_drefs :
377- new_dref = Dref .objects .get (id = dref .id )
378- dref_list .append (new_dref .id )
379- return Dref .objects .filter (id__in = dref_list ).order_by ("-created_at" )
417+ result_list = sorted (chain (dref , dref_op_update , dref_final_report ), key = attrgetter ("created_at" ), reverse = True )
418+ dref_list = []
419+ for data in result_list :
420+ if data .__class__ .__name__ == "DrefFinalReport" :
421+ final_report = DrefFinalReport .objects .get (id = data .id )
422+ dref_list .append (final_report )
423+ elif data .__class__ .__name__ == "DrefOperationalUpdate" :
424+ operational_update = DrefOperationalUpdate .objects .get (id = data .id )
425+ dref_list .append (operational_update )
426+ elif data .__class__ .__name__ == "Dref" :
427+ dref = Dref .objects .get (id = data .id )
428+ dref_list .append (dref )
429+ # iterate over the list and get the dref from that
430+ # check the dref in the new list if exists
431+ # annotated dref here
432+ annoatated_drefs = []
433+ for dref in dref_list :
434+ if dref .__class__ .__name__ == "DrefOperationalUpdate" :
435+ # annotate the dref and other operational update for that dref
436+ operational_update = DrefOperationalUpdate .objects .get (id = dref .id )
437+ dref_object = Dref .objects .get (drefoperationalupdate = operational_update .id )
438+ if dref_object not in annoatated_drefs :
439+ annoatated_drefs .append (dref_object )
440+ elif dref .__class__ .__name__ == "Dref" :
441+ dref_object = Dref .objects .get (id = dref .id )
442+ if dref_object not in annoatated_drefs :
443+ annoatated_drefs .append (dref_object )
444+ elif dref .__class__ .__name__ == "DrefFinalReport" :
445+ final_report = DrefFinalReport .objects .get (id = dref .id )
446+ dref_object = Dref .objects .get (dreffinalreport = final_report .id )
447+ if dref_object not in annoatated_drefs :
448+ annoatated_drefs .append (dref_object )
449+ dref_list = []
450+ for dref in annoatated_drefs :
451+ new_dref = Dref .objects .get (id = dref .id )
452+ dref_list .append (new_dref .id )
453+ return Dref .objects .filter (id__in = dref_list ).order_by ("-created_at" )
454+
380455
381456
382457class DrefShareView (views .APIView ):
0 commit comments