Skip to content

Commit 0b448ca

Browse files
authored
Merge pull request #2584 from janezd/fix-report-pickle
[FIX] Fix saving reports on Python 3.6
2 parents cf515f9 + 1caa813 commit 0b448ca

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

Orange/canvas/report/owreport.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ def __init__(self, name, html, scheme, module, icon_name, comment=""):
5656
self.id = id(icon)
5757
super().__init__(icon, name)
5858

59+
def __getnewargs__(self):
60+
return (self.name, self.html, self.scheme, self.module, self.icon_name,
61+
self.comment)
62+
5963

6064
class ReportItemModel(QStandardItemModel):
6165
def __init__(self, rows, columns, parent=None):

Orange/canvas/report/tests/test_report.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import unittest
2+
from unittest import mock
23
from importlib import import_module
34
import os
45
import warnings
6+
import tempfile
57

68
import AnyQt
79
from AnyQt.QtGui import QFont, QBrush
@@ -116,7 +118,7 @@ def test_report_table(self):
116118
'font-weight:normal;text-align:right;vertical-align:middle;">2</td>'
117119
'</tr></table>')
118120

119-
def test_save_report(self):
121+
def test_save_report_permission(self):
120122
"""
121123
Permission Error may occur when trying to save report.
122124
GH-2147
@@ -132,6 +134,23 @@ def test_save_report(self):
132134
unittest.mock.patch(patch_target_3, return_value=True):
133135
rep.save_report()
134136

137+
def test_save_report(self):
138+
rep = OWReport.get_instance()
139+
file = self.create_widget(OWFile)
140+
file.create_report_html()
141+
rep.make_report(file)
142+
temp_dir = tempfile.mkdtemp()
143+
temp_name = os.path.join(temp_dir, "f.report")
144+
try:
145+
with mock.patch("AnyQt.QtWidgets.QFileDialog.getSaveFileName",
146+
return_value=(temp_name, 0)), \
147+
mock.patch("AnyQt.QtWidgets.QMessageBox.exec_",
148+
return_value=True):
149+
rep.save_report()
150+
finally:
151+
os.remove(temp_name)
152+
os.rmdir(temp_dir)
153+
135154

136155
class TestReportWidgets(WidgetTest):
137156
model_widgets = MODEL_WIDGETS
@@ -220,3 +239,7 @@ def test_report_widgets_all(self):
220239
self.unsu_widgets + self.dist_widgets + self.visu_widgets + \
221240
self.spec_widgets
222241
self._create_report(widgets, rep, None)
242+
243+
244+
if __name__ == "__main__":
245+
unittest.main()

0 commit comments

Comments
 (0)