You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by vi...@apache.org on 2023/03/31 08:59:10 UTC
[superset] branch master updated: fix: moved alerts and reports default values to config (#22880)
This is an automated email from the ASF dual-hosted git repository.
villebro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 09757dc518 fix: moved alerts and reports default values to config (#22880)
09757dc518 is described below
commit 09757dc51830ec9bf6904a555574d00420d425d9
Author: Stepan <66...@users.noreply.github.com>
AuthorDate: Fri Mar 31 11:58:59 2023 +0300
fix: moved alerts and reports default values to config (#22880)
---
.../src/views/CRUD/alert/AlertReportModal.tsx | 65 ++++++++++++++--------
superset-frontend/src/views/CRUD/alert/types.ts | 5 ++
superset/config.py | 4 ++
superset/views/base.py | 3 +
4 files changed, 54 insertions(+), 23 deletions(-)
diff --git a/superset-frontend/src/views/CRUD/alert/AlertReportModal.tsx b/superset-frontend/src/views/CRUD/alert/AlertReportModal.tsx
index 9bf6cb6107..b9d6223e68 100644
--- a/superset-frontend/src/views/CRUD/alert/AlertReportModal.tsx
+++ b/superset-frontend/src/views/CRUD/alert/AlertReportModal.tsx
@@ -55,8 +55,10 @@ import {
MetaObject,
Operator,
Recipient,
+ AlertsReportsConfig,
} from 'src/views/CRUD/alert/types';
import { InfoTooltipWithTrigger } from '@superset-ui/chart-controls';
+import { useSelector } from 'react-redux';
import { AlertReportCronScheduler } from './components/AlertReportCronScheduler';
import { NotificationMethod } from './components/NotificationMethod';
@@ -83,6 +85,10 @@ interface AlertReportModalProps {
show: boolean;
}
+const DEFAULT_WORKING_TIMEOUT = 3600;
+const DEFAULT_CRON_VALUE = '0 * * * *'; // every hour
+const DEFAULT_RETENTION = 90;
+
const DEFAULT_NOTIFICATION_METHODS: NotificationMethodOption[] = ['Email'];
const DEFAULT_NOTIFICATION_FORMAT = 'PNG';
const CONDITIONS = [
@@ -135,25 +141,6 @@ const RETENTION_OPTIONS = [
},
];
-const DEFAULT_RETENTION = 90;
-const DEFAULT_WORKING_TIMEOUT = 3600;
-const DEFAULT_CRON_VALUE = '0 * * * *'; // every hour
-const DEFAULT_ALERT = {
- active: true,
- creation_method: 'alerts_reports',
- crontab: DEFAULT_CRON_VALUE,
- log_retention: DEFAULT_RETENTION,
- working_timeout: DEFAULT_WORKING_TIMEOUT,
- name: '',
- owners: [],
- recipients: [],
- sql: '',
- validator_config_json: {},
- validator_type: '',
- force_screenshot: false,
- grace_period: undefined,
-};
-
const StyledModal = styled(Modal)`
max-width: 1200px;
width: 100%;
@@ -512,6 +499,38 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({
);
};
+ const {
+ ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT,
+ ALERT_REPORTS_DEFAULT_CRON_VALUE,
+ ALERT_REPORTS_DEFAULT_RETENTION,
+ } = useSelector<any, AlertsReportsConfig>(state => {
+ const conf = state.common?.conf;
+ return {
+ ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT:
+ conf?.ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT ?? DEFAULT_WORKING_TIMEOUT,
+ ALERT_REPORTS_DEFAULT_CRON_VALUE:
+ conf?.ALERT_REPORTS_DEFAULT_CRON_VALUE ?? DEFAULT_CRON_VALUE,
+ ALERT_REPORTS_DEFAULT_RETENTION:
+ conf?.ALERT_REPORTS_DEFAULT_RETENTION ?? DEFAULT_RETENTION,
+ };
+ });
+
+ const defaultAlert = {
+ active: true,
+ creation_method: 'alerts_reports',
+ crontab: ALERT_REPORTS_DEFAULT_CRON_VALUE,
+ log_retention: ALERT_REPORTS_DEFAULT_RETENTION,
+ working_timeout: ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT,
+ name: '',
+ owners: [],
+ recipients: [],
+ sql: '',
+ validator_config_json: {},
+ validator_type: '',
+ force_screenshot: false,
+ grace_period: undefined,
+ };
+
const updateNotificationSetting = (
index: number,
setting: NotificationSetting,
@@ -549,7 +568,7 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({
setIsHidden(true);
onHide();
setNotificationSettings([]);
- setCurrentAlert({ ...DEFAULT_ALERT });
+ setCurrentAlert({ ...defaultAlert });
setNotificationAddState('active');
};
@@ -992,7 +1011,7 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({
!isEditMode &&
(!currentAlert || currentAlert.id || (isHidden && show))
) {
- setCurrentAlert({ ...DEFAULT_ALERT });
+ setCurrentAlert({ ...defaultAlert });
setNotificationSettings([]);
setNotificationAddState('active');
}
@@ -1299,7 +1318,7 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({
<span className="required">*</span>
</StyledSectionTitle>
<AlertReportCronScheduler
- value={currentAlert?.crontab || DEFAULT_CRON_VALUE}
+ value={currentAlert?.crontab || ALERT_REPORTS_DEFAULT_CRON_VALUE}
onChange={newVal => updateAlertState('crontab', newVal)}
/>
<div className="control-label">{TRANSLATIONS.TIMEZONE_TEXT}</div>
@@ -1329,7 +1348,7 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({
value={
typeof currentAlert?.log_retention === 'number'
? currentAlert?.log_retention
- : DEFAULT_RETENTION
+ : ALERT_REPORTS_DEFAULT_RETENTION
}
options={RETENTION_OPTIONS}
sortComparator={propertyComparator('value')}
diff --git a/superset-frontend/src/views/CRUD/alert/types.ts b/superset-frontend/src/views/CRUD/alert/types.ts
index ec59bb5a16..36d2b1d35a 100644
--- a/superset-frontend/src/views/CRUD/alert/types.ts
+++ b/superset-frontend/src/views/CRUD/alert/types.ts
@@ -117,3 +117,8 @@ export enum RecipientIconName {
Email = 'Email',
Slack = 'Slack',
}
+export interface AlertsReportsConfig {
+ ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT: number;
+ ALERT_REPORTS_DEFAULT_RETENTION: number;
+ ALERT_REPORTS_DEFAULT_CRON_VALUE: string;
+}
diff --git a/superset/config.py b/superset/config.py
index c9234e521d..123ff902c9 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -1264,6 +1264,10 @@ ALERT_REPORTS_WORKING_TIME_OUT_LAG = int(timedelta(seconds=10).total_seconds())
# if ALERT_REPORTS_WORKING_TIME_OUT_KILL is True, set a celery hard timeout
# Equal to working timeout + ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG
ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG = int(timedelta(seconds=1).total_seconds())
+# Default values that user using when creating alert
+ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT = 3600
+ALERT_REPORTS_DEFAULT_RETENTION = 90
+ALERT_REPORTS_DEFAULT_CRON_VALUE = "0 * * * *" # every hour
# If set to true no notification is sent, the worker will just log a message.
# Useful for debugging
ALERT_REPORTS_NOTIFICATION_DRY_RUN = False
diff --git a/superset/views/base.py b/superset/views/base.py
index ec74b8ccdb..0da0be0652 100644
--- a/superset/views/base.py
+++ b/superset/views/base.py
@@ -116,6 +116,9 @@ FRONTEND_CONF_KEYS = (
"HTML_SANITIZATION_SCHEMA_EXTENSIONS",
"WELCOME_PAGE_LAST_TAB",
"VIZ_TYPE_DENYLIST",
+ "ALERT_REPORTS_DEFAULT_CRON_VALUE",
+ "ALERT_REPORTS_DEFAULT_RETENTION",
+ "ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT",
)
logger = logging.getLogger(__name__)