|
9 | 9 | from django.utils.translation import gettext_lazy as _ |
10 | 10 | from django.templatetags.static import static |
11 | 11 | from django.core.exceptions import ValidationError |
| 12 | +from django.contrib.postgres.aggregates import ArrayAgg |
12 | 13 |
|
13 | 14 | from api.models import Country, DisasterType, District, FieldReport |
14 | 15 |
|
@@ -585,33 +586,31 @@ def __str__(self): |
585 | 586 | @staticmethod |
586 | 587 | def get_for(user): |
587 | 588 | 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( |
590 | 592 | created_user_list=models.F("created_by"), |
591 | | - users_list=models.F("users"), |
| 593 | + users_list=ArrayAgg("users", filter=models.Q(users__isnull=False)), |
592 | 594 | op_users=models.Subquery( |
593 | 595 | DrefOperationalUpdate.objects.filter(dref=models.OuterRef("id")) |
594 | 596 | .order_by() |
595 | 597 | .values("id") |
596 | | - .annotate(c=models.F("users")) |
| 598 | + .annotate(c=ArrayAgg("users", filter=models.Q(users__isnull=False))) |
597 | 599 | .values("c")[:1] |
598 | 600 | ), |
599 | 601 | fr_users=models.Subquery( |
600 | 602 | DrefFinalReport.objects.filter(dref=models.OuterRef("id")) |
601 | 603 | .order_by() |
602 | 604 | .values("id") |
603 | | - .annotate(c=models.F("users")) |
| 605 | + .annotate(c=ArrayAgg("users", filter=models.Q(users__isnull=False))) |
604 | 606 | .values("c")[:1], |
605 | 607 | ), |
606 | | - ) |
607 | | - .filter( |
| 608 | + ).filter( |
608 | 609 | 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() |
615 | 614 |
|
616 | 615 |
|
617 | 616 | class DrefFile(models.Model): |
|
0 commit comments