mirror of
https://github.com/apache/superset.git
synced 2026-04-14 21:54:31 +00:00
* backend creation method validation * added tests * Update superset/reports/dao.py Co-authored-by: Beto Dealmeida <roberto@dealmeida.net> * Update superset/reports/dao.py Co-authored-by: Beto Dealmeida <roberto@dealmeida.net> * Update tests/integration_tests/reports/api_tests.py Co-authored-by: Beto Dealmeida <roberto@dealmeida.net> * Update tests/integration_tests/reports/api_tests.py Co-authored-by: Beto Dealmeida <roberto@dealmeida.net> * Update superset/reports/dao.py Co-authored-by: Beto Dealmeida <roberto@dealmeida.net> * Update superset/reports/dao.py Co-authored-by: Beto Dealmeida <roberto@dealmeida.net> * Update superset/reports/commands/create.py Co-authored-by: Beto Dealmeida <roberto@dealmeida.net> * Update superset/reports/commands/exceptions.py Co-authored-by: Beto Dealmeida <roberto@dealmeida.net> * revisions Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
243 lines
7.1 KiB
Python
243 lines
7.1 KiB
Python
# 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 flask_babel import lazy_gettext as _
|
|
|
|
from superset.commands.exceptions import (
|
|
CommandException,
|
|
CommandInvalidError,
|
|
CreateFailedError,
|
|
DeleteFailedError,
|
|
ForbiddenError,
|
|
ValidationError,
|
|
)
|
|
|
|
|
|
class DatabaseNotFoundValidationError(ValidationError):
|
|
"""
|
|
Marshmallow validation error for database does not exist
|
|
"""
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__(_("Database does not exist"), field_name="database")
|
|
|
|
|
|
class DashboardNotFoundValidationError(ValidationError):
|
|
"""
|
|
Marshmallow validation error for dashboard does not exist
|
|
"""
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__(_("Dashboard does not exist"), field_name="dashboard")
|
|
|
|
|
|
class ChartNotFoundValidationError(ValidationError):
|
|
"""
|
|
Marshmallow validation error for chart does not exist
|
|
"""
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__(_("Chart does not exist"), field_name="chart")
|
|
|
|
|
|
class ReportScheduleAlertRequiredDatabaseValidationError(ValidationError):
|
|
"""
|
|
Marshmallow validation error for report schedule alert missing database field
|
|
"""
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__(_("Database is required for alerts"), field_name="database")
|
|
|
|
|
|
class ReportScheduleRequiredTypeValidationError(ValidationError):
|
|
"""
|
|
Marshmallow type validation error for report schedule missing type field
|
|
"""
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__(_("Type is required"), field_name="type")
|
|
|
|
|
|
class ReportScheduleChartOrDashboardValidationError(ValidationError):
|
|
"""
|
|
Marshmallow validation error for report schedule accept exlusive chart or dashboard
|
|
"""
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__(_("Choose a chart or dashboard not both"), field_name="chart")
|
|
|
|
|
|
class ChartNotSavedValidationError(ValidationError):
|
|
"""
|
|
Marshmallow validation error for charts that haven't been saved yet
|
|
"""
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__(
|
|
_("Please save your chart first, then try creating a new email report."),
|
|
field_name="chart",
|
|
)
|
|
|
|
|
|
class DashboardNotSavedValidationError(ValidationError):
|
|
"""
|
|
Marshmallow validation error for dashboards that haven't been saved yet
|
|
"""
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__(
|
|
_(
|
|
"Please save your dashboard first, then try creating a new email report."
|
|
),
|
|
field_name="dashboard",
|
|
)
|
|
|
|
|
|
class ReportScheduleInvalidError(CommandInvalidError):
|
|
message = _("Report Schedule parameters are invalid.")
|
|
|
|
|
|
class ReportScheduleBulkDeleteFailedError(DeleteFailedError):
|
|
message = _("Report Schedule could not be deleted.")
|
|
|
|
|
|
class ReportScheduleCreateFailedError(CreateFailedError):
|
|
message = _("Report Schedule could not be created.")
|
|
|
|
|
|
class ReportScheduleUpdateFailedError(CreateFailedError):
|
|
message = _("Report Schedule could not be updated.")
|
|
|
|
|
|
class ReportScheduleNotFoundError(CommandException):
|
|
message = _("Report Schedule not found.")
|
|
|
|
|
|
class ReportScheduleDeleteFailedError(CommandException):
|
|
message = _("Report Schedule delete failed.")
|
|
|
|
|
|
class PruneReportScheduleLogFailedError(CommandException):
|
|
message = _("Report Schedule log prune failed.")
|
|
|
|
|
|
class ReportScheduleScreenshotFailedError(CommandException):
|
|
message = _("Report Schedule execution failed when generating a screenshot.")
|
|
|
|
|
|
class ReportScheduleCsvFailedError(CommandException):
|
|
message = _("Report Schedule execution failed when generating a csv.")
|
|
|
|
|
|
class ReportScheduleDataFrameFailedError(CommandException):
|
|
message = _("Report Schedule execution failed when generating a dataframe.")
|
|
|
|
|
|
class ReportScheduleExecuteUnexpectedError(CommandException):
|
|
message = _("Report Schedule execution got an unexpected error.")
|
|
|
|
|
|
class ReportSchedulePreviousWorkingError(CommandException):
|
|
message = _("Report Schedule is still working, refusing to re-compute.")
|
|
|
|
|
|
class ReportScheduleWorkingTimeoutError(CommandException):
|
|
message = _("Report Schedule reached a working timeout.")
|
|
|
|
|
|
class ReportScheduleNameUniquenessValidationError(ValidationError):
|
|
"""
|
|
Marshmallow validation error for Report Schedule name and type already exists
|
|
"""
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__([_("Name must be unique")], field_name="name")
|
|
|
|
|
|
class ReportScheduleCreationMethodUniquenessValidationError(CommandException):
|
|
status = 409
|
|
message = "Resource already has an attached report."
|
|
|
|
|
|
class AlertQueryMultipleRowsError(CommandException):
|
|
|
|
message = _("Alert query returned more then one row.")
|
|
|
|
|
|
class AlertValidatorConfigError(CommandException):
|
|
|
|
message = _("Alert validator config error.")
|
|
|
|
|
|
class AlertQueryMultipleColumnsError(CommandException):
|
|
message = _("Alert query returned more then one column.")
|
|
|
|
|
|
class AlertQueryInvalidTypeError(CommandException):
|
|
message = _("Alert query returned a non-number value.")
|
|
|
|
|
|
class AlertQueryError(CommandException):
|
|
message = _("Alert found an error while executing a query.")
|
|
|
|
|
|
class AlertQueryTimeout(CommandException):
|
|
message = _("A timeout occurred while executing the query.")
|
|
|
|
|
|
class ReportScheduleScreenshotTimeout(CommandException):
|
|
message = _("A timeout occurred while taking a screenshot.")
|
|
|
|
|
|
class ReportScheduleCsvTimeout(CommandException):
|
|
message = _("A timeout occurred while generating a csv.")
|
|
|
|
|
|
class ReportScheduleDataFrameTimeout(CommandException):
|
|
message = _("A timeout occurred while generating a dataframe.")
|
|
|
|
|
|
class ReportScheduleAlertGracePeriodError(CommandException):
|
|
message = _("Alert fired during grace period.")
|
|
|
|
|
|
class ReportScheduleAlertEndGracePeriodError(CommandException):
|
|
message = _("Alert ended grace period.")
|
|
|
|
|
|
class ReportScheduleNotificationError(CommandException):
|
|
message = _("Alert on grace period")
|
|
|
|
|
|
class ReportScheduleSelleniumUserNotFoundError(CommandException):
|
|
message = _("Report Schedule sellenium user not found")
|
|
|
|
|
|
class ReportScheduleStateNotFoundError(CommandException):
|
|
message = _("Report Schedule state not found")
|
|
|
|
|
|
class ReportScheduleUnexpectedError(CommandException):
|
|
message = _("Report schedule unexpected error")
|
|
|
|
|
|
class ReportScheduleForbiddenError(ForbiddenError):
|
|
message = _("Changing this report is forbidden")
|
|
|
|
|
|
class ReportSchedulePruneLogError(CommandException):
|
|
message = _("An error occurred while pruning logs ")
|