Add a filter by involved users to alert groups page (#1240)
Related to #1119 It also adds a shortcut to filter current user's related alert groups (alert groups user was notified by, or in which user participated). Make the filter visible by default, with a false value.
This commit is contained in:
parent
2b2a837991
commit
b1fc123d9f
3 changed files with 38 additions and 1 deletions
|
|
@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## Unreleased
|
||||
|
||||
### Added
|
||||
|
||||
- Add involved users filter to alert groups listing page (+ mine shortcut)
|
||||
|
||||
### Changed
|
||||
|
||||
- Improve logging for creating contact point for Grafana Alerting integration
|
||||
|
|
|
|||
|
|
@ -85,7 +85,11 @@ class AlertGroupFilter(DateRangeFilterMixin, ModelFieldFilterMixin, filters.Filt
|
|||
invitees_are = filters.ModelMultipleChoiceFilter(
|
||||
queryset=get_user_queryset, to_field_name="public_primary_key", method="filter_invitees_are"
|
||||
)
|
||||
involved_users_are = filters.ModelMultipleChoiceFilter(
|
||||
queryset=get_user_queryset, to_field_name="public_primary_key", method="filter_by_involved_users"
|
||||
)
|
||||
with_resolution_note = filters.BooleanFilter(method="filter_with_resolution_note")
|
||||
mine = filters.BooleanFilter(method="filter_mine")
|
||||
|
||||
class Meta:
|
||||
model = AlertGroup
|
||||
|
|
@ -132,10 +136,27 @@ class AlertGroupFilter(DateRangeFilterMixin, ModelFieldFilterMixin, filters.Filt
|
|||
if not users:
|
||||
return queryset
|
||||
|
||||
queryset = queryset.filter(acknowledged=False, resolved=False, log_records__author__in=users).distinct()
|
||||
queryset = queryset.filter(log_records__author__in=users).distinct()
|
||||
|
||||
return queryset
|
||||
|
||||
def filter_by_involved_users(self, queryset, name, value):
|
||||
users = value
|
||||
|
||||
if not users:
|
||||
return queryset
|
||||
|
||||
queryset = queryset.filter(
|
||||
Q(personal_log_records__author__in=users) | Q(log_records__author__in=users)
|
||||
).distinct()
|
||||
|
||||
return queryset
|
||||
|
||||
def filter_mine(self, queryset, name, value):
|
||||
if value:
|
||||
return self.filter_by_involved_users(queryset, "users", [self.request.user.pk])
|
||||
return queryset
|
||||
|
||||
def filter_with_resolution_note(self, queryset, name, value):
|
||||
if value is True:
|
||||
queryset = queryset.filter(Q(resolution_notes__isnull=False, resolution_notes__deleted_at=None)).distinct()
|
||||
|
|
@ -522,6 +543,12 @@ class AlertGroupView(
|
|||
"type": "options",
|
||||
"href": api_root + "users/?filters=true&roles=0&roles=1&roles=2",
|
||||
},
|
||||
{
|
||||
"name": "involved_users_are",
|
||||
"type": "options",
|
||||
"href": api_root + "users/?filters=true&roles=0&roles=1&roles=2",
|
||||
"default": {"display_name": self.request.user.username, "value": self.request.user.public_primary_key},
|
||||
},
|
||||
{
|
||||
"name": "status",
|
||||
"type": "options",
|
||||
|
|
@ -548,6 +575,11 @@ class AlertGroupView(
|
|||
"type": "boolean",
|
||||
"default": "true",
|
||||
},
|
||||
{
|
||||
"name": "mine",
|
||||
"type": "boolean",
|
||||
"default": "true",
|
||||
},
|
||||
]
|
||||
|
||||
if filter_name is not None:
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ class IncidentsFilters extends Component<IncidentsFiltersProps, IncidentsFilters
|
|||
} else {
|
||||
newQuery = {
|
||||
status: [IncidentStatus.New, IncidentStatus.Acknowledged],
|
||||
mine: false,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue