oncall-engine/engine/apps/api/alert_group_table_columns.py
Rares Mardare 455f74560c
Alert group column/label selector (#3281)
# What this PR does

Adds new functionality to enable which columns should show on the alert
group page


![image](https://github.com/grafana/oncall/assets/40542072/952d4004-9cd6-478c-a104-cd5d270cfd58)

---------

Co-authored-by: Julia <ferril.darkdiver@gmail.com>
2023-11-29 12:11:31 +00:00

31 lines
1.4 KiB
Python

import typing
from apps.user_management.constants import AlertGroupTableColumns, default_columns
if typing.TYPE_CHECKING:
from apps.user_management.models import User
def alert_group_table_user_settings(user: "User") -> AlertGroupTableColumns:
"""
Returns user settings for alert group table columns. The flag "default" shows that user has default settings for
visible columns. It's used by frontend to enable/disable `reset` button.
This function uses lazy update to update columns settings for organization and for user.
"""
default_organization_columns = default_columns()
if not user.organization.alert_group_table_columns:
user.organization.update_alert_group_table_columns(default_organization_columns)
organization_columns = user.organization.alert_group_table_columns
if user.alert_group_table_selected_columns:
visible_columns = [
column for column in user.alert_group_table_selected_columns if column in organization_columns
]
else:
visible_columns = default_organization_columns
user.update_alert_group_table_selected_columns(visible_columns)
hidden_columns = [column for column in organization_columns if column not in visible_columns]
return {
"visible": visible_columns,
"hidden": hidden_columns,
"default": visible_columns == default_organization_columns,
}