ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: очистка stale assignees Operational Core
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
# Django imports
|
||||
from django.contrib.postgres.aggregates import ArrayAgg
|
||||
from django.contrib.postgres.fields import ArrayField
|
||||
from django.db.models import Q, UUIDField, Value, QuerySet, OuterRef, Subquery
|
||||
from django.db.models import F, Q, UUIDField, Value, QuerySet, OuterRef, Subquery
|
||||
from django.db.models.functions import Coalesce
|
||||
|
||||
# Module imports
|
||||
@@ -37,8 +37,20 @@ def issue_queryset_grouper(
|
||||
"module_ids": "issue_module__module_id",
|
||||
}
|
||||
|
||||
valid_assignee_filter = (
|
||||
Q(issue_assignee__deleted_at__isnull=True)
|
||||
& Q(assignees__is_active=True)
|
||||
& Q(assignees__member_workspace__workspace_id=F("workspace_id"))
|
||||
& Q(assignees__member_workspace__is_active=True)
|
||||
& Q(assignees__member_workspace__is_banned=False)
|
||||
& Q(assignees__member_workspace__deleted_at__isnull=True)
|
||||
& Q(assignees__member_project__project_id=F("project_id"))
|
||||
& Q(assignees__member_project__is_active=True)
|
||||
& Q(assignees__member_project__deleted_at__isnull=True)
|
||||
)
|
||||
|
||||
GROUP_FILTER_MAPPER: Dict[str, Q] = {
|
||||
"assignees__id": Q(issue_assignee__deleted_at__isnull=True),
|
||||
"assignees__id": valid_assignee_filter,
|
||||
"labels__id": Q(label_issue__deleted_at__isnull=True),
|
||||
"issue_module__module_id": Q(issue_module__deleted_at__isnull=True),
|
||||
}
|
||||
@@ -51,6 +63,14 @@ def issue_queryset_grouper(
|
||||
IssueAssignee.objects.filter(
|
||||
issue_id=OuterRef("pk"),
|
||||
deleted_at__isnull=True,
|
||||
assignee__is_active=True,
|
||||
assignee__member_workspace__workspace_id=OuterRef("workspace_id"),
|
||||
assignee__member_workspace__is_active=True,
|
||||
assignee__member_workspace__is_banned=False,
|
||||
assignee__member_workspace__deleted_at__isnull=True,
|
||||
assignee__member_project__project_id=OuterRef("project_id"),
|
||||
assignee__member_project__is_active=True,
|
||||
assignee__member_project__deleted_at__isnull=True,
|
||||
)
|
||||
.values("issue_id")
|
||||
.annotate(arr=ArrayAgg("assignee_id", distinct=True))
|
||||
|
||||
Reference in New Issue
Block a user