Fix resource duplication caused by available_teams_lookup_args (#1593)

# What this PR does

## Which issue(s) this PR fixes

## Checklist

- [ ] Tests updated
- [ ] Documentation added
- [ ] `CHANGELOG.md` updated
This commit is contained in:
Ildar Iskhakov 2023-03-22 15:43:32 +08:00 committed by GitHub
parent d5079d9ffc
commit cc2b4eeae2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 13 additions and 13 deletions

View file

@ -294,7 +294,7 @@ class AlertGroupView(
)
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
queryset = queryset.only("id")

View file

@ -139,7 +139,7 @@ class AlertReceiveChannelView(
queryset = self.serializer_class.setup_eager_loading(queryset)
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
# Hide direct paging integrations from the list view, but not from the filters
if not is_filters_request:

View file

@ -37,7 +37,7 @@ class AlertReceiveChannelTemplateView(
organization=self.request.auth.organization,
)
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
return queryset

View file

@ -70,7 +70,7 @@ class ChannelFilterView(
slack_channel_pk=Subquery(slack_channels_subq.values("public_primary_key")[:1]),
)
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
queryset = self.serializer_class.setup_eager_loading(queryset)
return queryset

View file

@ -47,7 +47,7 @@ class CustomButtonView(TeamFilteringMixin, PublicPrimaryKeyMixin, ModelViewSet):
organization=self.request.auth.organization,
)
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
return queryset

View file

@ -69,7 +69,7 @@ class EscalationChainViewSet(
)
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
if is_filters_request:
# Do not annotate num_integrations and num_routes for filters request,

View file

@ -74,7 +74,7 @@ class EscalationPolicyView(
).distinct()
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
queryset = self.serializer_class.setup_eager_loading(queryset)
return queryset

View file

@ -49,7 +49,7 @@ class IntegrationHeartBeatView(
**lookup_kwargs,
)
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
queryset = self.serializer_class.setup_eager_loading(queryset)
return queryset

View file

@ -56,7 +56,7 @@ class OnCallShiftView(TeamFilteringMixin, PublicPrimaryKeyMixin, UpdateSerialize
)
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
queryset = self.serializer_class.setup_eager_loading(queryset)
return queryset.order_by("schedules")

View file

@ -40,7 +40,7 @@ class ResolutionNoteView(TeamFilteringMixin, PublicPrimaryKeyMixin, UpdateSerial
)
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
queryset = self.serializer_class.setup_eager_loading(queryset)
return queryset

View file

@ -171,7 +171,7 @@ class ScheduleView(
"prev_ical_file_overrides",
)
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
if not is_short_request:
queryset = self._annotate_queryset(queryset)
queryset = self.serializer_class.setup_eager_loading(queryset)
@ -231,7 +231,7 @@ class ScheduleView(
public_primary_key=pk,
)
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
queryset = self._annotate_queryset(queryset)
try:

View file

@ -33,7 +33,7 @@ class WebhooksView(TeamFilteringMixin, PublicPrimaryKeyMixin, ModelViewSet):
organization=self.request.auth.organization,
).prefetch_related("responses")
if not ignore_filtering_by_available_teams:
queryset = queryset.filter(*self.available_teams_lookup_args)
queryset = queryset.filter(*self.available_teams_lookup_args).distinct()
return queryset
def get_object(self):