| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| from typing import List, Optional |
| |
| from flask_appbuilder.security.sqla.models import User |
| |
| from superset import db |
| from superset.models.core import Database |
| from superset.models.dashboard import Dashboard |
| from superset.models.reports import ( |
| ReportExecutionLog, |
| ReportRecipients, |
| ReportSchedule, |
| ReportState, |
| ) |
| from superset.models.slice import Slice |
| |
| |
| def insert_report_schedule( |
| type: str, |
| name: str, |
| crontab: str, |
| sql: Optional[str] = None, |
| description: Optional[str] = None, |
| chart: Optional[Slice] = None, |
| dashboard: Optional[Dashboard] = None, |
| database: Optional[Database] = None, |
| owners: Optional[List[User]] = None, |
| validator_type: Optional[str] = None, |
| validator_config_json: Optional[str] = None, |
| log_retention: Optional[int] = None, |
| last_state: Optional[ReportState] = None, |
| grace_period: Optional[int] = None, |
| recipients: Optional[List[ReportRecipients]] = None, |
| logs: Optional[List[ReportExecutionLog]] = None, |
| ) -> ReportSchedule: |
| owners = owners or [] |
| recipients = recipients or [] |
| logs = logs or [] |
| last_state = last_state or ReportState.NOOP |
| report_schedule = ReportSchedule( |
| type=type, |
| name=name, |
| crontab=crontab, |
| sql=sql, |
| description=description, |
| chart=chart, |
| dashboard=dashboard, |
| database=database, |
| owners=owners, |
| validator_type=validator_type, |
| validator_config_json=validator_config_json, |
| log_retention=log_retention, |
| grace_period=grace_period, |
| recipients=recipients, |
| logs=logs, |
| last_state=last_state, |
| ) |
| db.session.add(report_schedule) |
| db.session.commit() |
| return report_schedule |