Skip to content

Commit 980833a

Browse files
authored
Merge pull request #1864 from IFRCGo/fix/regions-users
Add tagged users to view and edit dref
2 parents 09100c5 + 5cafd67 commit 980833a

File tree

1 file changed

+4
-29
lines changed

1 file changed

+4
-29
lines changed

dref/views.py

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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

272247
class 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

Comments
 (0)