Skip to content

Commit 399c4ef

Browse files
authored
Merge pull request #3703 from robertcv/fix/owsql_table_select
[FIX] SQL Table: Restore selected table from settings
2 parents d20a5fd + fa3006d commit 399c4ef

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

Orange/widgets/data/owsql.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,6 @@ def __init__(self):
141141
self.tablecombo.setToolTip('table')
142142
tables.layout().addWidget(self.tablecombo)
143143

144-
index = self.tablecombo.findText(str(self.table))
145-
if index != -1:
146-
self.tablecombo.setCurrentIndex(index)
147-
# set up the callback to select_table in case of selection change
148-
self.tablecombo.activated[int].connect(self.select_table)
149-
150144
self.connectbutton = gui.button(
151145
tables, self, '↻', callback=self.connect)
152146
self.connectbutton.setSizePolicy(
@@ -181,6 +175,11 @@ def __init__(self):
181175
gui.rubber(self.buttonsArea)
182176

183177
self.connect()
178+
index = self.tablecombo.findText(str(self.table))
179+
if index != -1:
180+
self.tablecombo.setCurrentIndex(index)
181+
# set up the callback to select_table in case of selection change
182+
self.tablecombo.activated[int].connect(self.select_table)
184183

185184
QTimer.singleShot(0, self.select_table)
186185

Orange/widgets/data/tests/test_owsql.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,28 @@ def test_non_postgres(self, mock_backends):
9292
self.assertTrue(widget.download)
9393
self.assertFalse(widget.downloadcb.isEnabled())
9494

95+
@mock.patch('Orange.widgets.data.owsql.Table')
96+
@mock.patch('Orange.widgets.data.owsql.SqlTable')
97+
@mock.patch('Orange.widgets.data.owsql.Backend')
98+
def test_restore_table(self, mock_backends, mock_sqltable, mock_table):
99+
"""Test if selected table is restored from settings"""
100+
backend = mock.Mock()
101+
backend().display_name = "database"
102+
del backend().missing_extension
103+
backend().list_tables.return_value = ["a", "b", "c"]
104+
mock_backends.available_backends.return_value = [backend]
105+
mock_sqltable().approx_len.return_value = 100
106+
107+
settings = {'__version__': 2,
108+
'host': '',
109+
'port': '',
110+
'guess_values': False,
111+
'download': False,
112+
'table': 'b'}
113+
114+
widget = self.create_widget(OWSql, stored_settings=settings)
115+
self.assertEqual(widget.tablecombo.currentText(), "b")
116+
95117

96118
if __name__ == "__main__":
97119
unittest.main()

0 commit comments

Comments
 (0)