Skip to content

Commit 5d418f6

Browse files
committed
Update filter logic in dref view
1 parent deb1b10 commit 5d418f6

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

dref/models.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from django.utils.translation import gettext_lazy as _
1010
from django.templatetags.static import static
1111
from django.core.exceptions import ValidationError
12+
from django.contrib.postgres.aggregates import ArrayAgg
1213

1314
from api.models import Country, DisasterType, District, FieldReport
1415

@@ -585,33 +586,31 @@ def __str__(self):
585586
@staticmethod
586587
def get_for(user):
587588
user_id = user.id
588-
return (
589-
Dref.objects.annotate(
589+
current_user_list = []
590+
current_user_list.append(user_id)
591+
return Dref.objects.annotate(
590592
created_user_list=models.F("created_by"),
591-
users_list=models.F("users"),
593+
users_list=ArrayAgg("users", filter=models.Q(users__isnull=False)),
592594
op_users=models.Subquery(
593595
DrefOperationalUpdate.objects.filter(dref=models.OuterRef("id"))
594596
.order_by()
595597
.values("id")
596-
.annotate(c=models.F("users"))
598+
.annotate(c=ArrayAgg("users", filter=models.Q(users__isnull=False)))
597599
.values("c")[:1]
598600
),
599601
fr_users=models.Subquery(
600602
DrefFinalReport.objects.filter(dref=models.OuterRef("id"))
601603
.order_by()
602604
.values("id")
603-
.annotate(c=models.F("users"))
605+
.annotate(c=ArrayAgg("users", filter=models.Q(users__isnull=False)))
604606
.values("c")[:1],
605607
),
606-
)
607-
.filter(
608+
).filter(
608609
models.Q(created_user_list=user_id)
609-
| models.Q(users_list=user_id)
610-
| models.Q(op_users=user_id)
611-
| models.Q(fr_users=user_id)
612-
)
613-
.distinct()
614-
)
610+
| models.Q(users_list__contains=current_user_list)
611+
| models.Q(op_users__contains=current_user_list)
612+
| models.Q(fr_users__contains=current_user_list)
613+
).distinct()
615614

616615

617616
class DrefFile(models.Model):

dref/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def get_published(self, request, pk=None, version=None):
6969

7070
class DrefOperationalUpdateViewSet(RevisionMixin, viewsets.ModelViewSet):
7171
serializer_class = DrefOperationalUpdateSerializer
72-
permission_classes = [permissions.IsAuthenticated, DrefOperationalUpdateUpdatePermission]
72+
permission_classes = [permissions.IsAuthenticated]
7373
filterset_class = DrefOperationalUpdateFilter
7474

7575
def get_queryset(self):
@@ -119,7 +119,7 @@ def get_published(self, request, pk=None, version=None):
119119

120120
class DrefFinalReportViewSet(RevisionMixin, viewsets.ModelViewSet):
121121
serializer_class = DrefFinalReportSerializer
122-
permission_classes = [permissions.IsAuthenticated, DrefFinalReportUpdatePermission]
122+
permission_classes = [permissions.IsAuthenticated]
123123

124124
def get_queryset(self):
125125
user = self.request.user

0 commit comments

Comments
 (0)