Open gdudau opened 6 hours ago
Hey @gdudau! I'm here to help you with your issue. Let's work together to solve this bug and get everything back on track.
You can't delete a chart after deleting its dataset in Superset version 4.0.2 because the DeleteChartCommand
class includes a validation step that checks for the existence of the chart models. If the dataset is deleted, the associated chart models may no longer exist, causing the ChartNotFoundError
to be raised during the validation process.
Additionally, when attempting to delete a dataset, Superset provides a warning that the dataset is linked to charts and dashboards, and deleting the dataset will break those objects. This is shown in the DeleteModal
component, which lists the affected charts and dashboards and asks for confirmation before proceeding with the deletion.
Here is the relevant code snippet from the DeleteChartCommand
class:
def validate(self) -> None:
# Validate/populate model exists
self._models = ChartDAO.find_by_ids(self._model_ids)
if not self._models or len(self._models) != len(self._model_ids):
raise ChartNotFoundError()
# Check there are no associated ReportSchedules
if reports := ReportScheduleDAO.find_by_chart_ids(self._model_ids):
report_names = [report.name for report in reports]
raise ChartDeleteFailedReportsExistError(
_(
"There are associated alerts or reports: %(report_names)s",
report_names=",".join(report_names),
)
)
# Check ownership
for model in self._models:
try:
security_manager.raise_for_ownership(model)
except SupersetSecurityException as ex:
raise ChartForbiddenError() from ex
The key part is:
self._models = ChartDAO.find_by_ids(self._model_ids)
if not self._models or len(self._models) != len(self._model_ids):
raise ChartNotFoundError()
This code checks if the chart models exist. If they don't, it raises a ChartNotFoundError
, preventing the deletion process from proceeding [1][2].
To continue talking to Dosu, mention @dosu.
Bug description
I cannot delete a chart after I deleted the dataset
When i open this chart there is no name or dataset (see image).
Screenshots/recordings
No response
Superset version
4.0.0
Python version
3.11
Node version
18 or greater
Browser
Firefox
Additional context
Checklist