Skip to content

Commit aa20732

Browse files
committed
#239 | Fix bug in ReportResource delete method and delete associated widgets
1 parent dab317c commit aa20732

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

redash/handlers/reports.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,9 @@ def delete(self, report_id):
297297
report = get_object_or_404(Report.get_by_id, report_id)
298298

299299
require_object_delete_permission(report, self.current_user)
300-
report.remove()
300+
report.remove()
301+
# also delete as a cascade the widgets
302+
models.Widget.delete_by_report_id(report_id)
301303

302304
self.record_event({
303305
"action": "delete",

redash/models/__init__.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1250,6 +1250,25 @@ def get_id_from_text(self, text):
12501250
return None
12511251
return text.replace("[turnilo-widget]", "").split("/")[0]
12521252

1253+
@classmethod
1254+
def delete_by_report_id(self, _report_id:str):
1255+
if isinstance(_report_id, int):
1256+
_report_id = str(_report_id)
1257+
for i in self.query.all():
1258+
report_id = i.get_id_from_text(i.text)
1259+
if report_id == _report_id:
1260+
db.session.delete(i)
1261+
db.session.commit()
1262+
1263+
def copy(self, dashboard_id):
1264+
return {
1265+
"options": self.options,
1266+
"width": self.width,
1267+
"text": self.text,
1268+
"visualization_id": self.visualization_id,
1269+
"dashboard_id": dashboard_id,
1270+
}
1271+
12531272
def get_report_id(self):
12541273
return self.get_id_from_text(self.text)
12551274

0 commit comments

Comments
 (0)