code: def insert_report_schedule(
      type: str,
      name: str,
      crontab: str,
      owners: list[User],
      timezone: Optional[str] = None,
      sql: Optional[str] = None,
      description: Optional[str] = None,
      chart: Optional[Slice] = None,
      dashboard: Optional[Dashboard] = None,
      database: Optional[Database] = 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,
      report_format: Optional[ReportDataFormat] = None,
      logs: Optional[list[ReportExecutionLog]] = None,
      extra: Optional[dict[Any, Any]] = None,
      force_screenshot: bool = False,
  ) -> ReportSchedule:
      owners = owners or []
      recipients = recipients or []
      logs = logs or []
      last_state = last_state or ReportState.NOOP
  
      with override_user(owners[0]):
          report_schedule = ReportSchedule(
              type=type,
              name=name,
              crontab=crontab,
              timezone=timezone,
              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,
              report_format=report_format,
              extra=extra,
              force_screenshot=force_screenshot,
          )
      db.session.add(report_schedule)
      db.session.commit()
      return report_schedule
  
file_path: superset/tests/integration_tests/reports/utils.py
imports: import json
  from contextlib import contextmanager
  from typing import Any, Optional
  from uuid import uuid4
  from flask_appbuilder.security.sqla.models import User
  from superset import db, security_manager
  from superset.models.core import Database
  from superset.models.dashboard import Dashboard
  from superset.models.slice import Slice
  from superset.reports.models import ReportDataFormat, ReportExecutionLog, ReportRecipients, ReportRecipientType, ReportSchedule, ReportScheduleType, ReportState
  from superset.utils.core import override_user
  from tests.integration_tests.test_app import app
  from tests.integration_tests.utils import read_fixture
label_desc: Use image node_id 1 for calling a global function with example usage: insert_report_schedule(type, name, crontab, owners, timezone, sql, description, chart, dashboard, database, validator_type, validator_config_json, log_retention, last_state, grace_period, recipients, report_format, logs, extra, force_screenshot) and returns: report_schedule