Skip to content

Commit c4dcb7b

Browse files
committedNov 29, 2015
[DbManager] delete layer passed to querybuilder to set sql layer filter (follow f6e3161)
1 parent 5408e84 commit c4dcb7b

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed
 

‎python/plugins/db_manager/dlg_sql_window.py

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ def executeSql(self):
209209
self.update()
210210
QApplication.restoreOverrideCursor()
211211

212-
def _getSqlLayer(self):
212+
def _getSqlLayer(self, _filter):
213213
hasUniqueField = self.uniqueColumnCheck.checkState() == Qt.Checked
214214
if hasUniqueField:
215215
if self.allowMultiColumnPk:
@@ -258,24 +258,23 @@ def _getSqlLayer(self):
258258

259259
# create the layer
260260
layer = self.db.toSqlLayer(query, geomFieldName, uniqueFieldName, newLayerName, layerType,
261-
self.avoidSelectById.isChecked(), self.filter)
261+
self.avoidSelectById.isChecked(), _filter)
262262
if layer.isValid():
263263
return layer
264264
else:
265265
return None
266266

267267
def loadSqlLayer(self):
268268
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
269-
layer = self._getSqlLayer()
270-
QApplication.restoreOverrideCursor()
271-
272-
if layer == None:
273-
return
269+
try:
270+
layer = self._getSqlLayer(self.filter)
271+
if layer == None:
272+
return
274273

275-
from qgis.core import QgsMapLayerRegistry
276-
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
277-
QgsMapLayerRegistry.instance().addMapLayers([layer], True)
278-
QApplication.restoreOverrideCursor()
274+
from qgis.core import QgsMapLayerRegistry
275+
QgsMapLayerRegistry.instance().addMapLayers([layer], True)
276+
finally:
277+
QApplication.restoreOverrideCursor()
279278

280279
def fillColumnCombos(self):
281280
query = self._getSqlQuery()
@@ -460,18 +459,12 @@ def uniqueTextChanged(self, text):
460459

461460
def setFilter(self):
462461
from qgis.gui import QgsQueryBuilder
463-
layer = self._getSqlLayer()
Code has comments. Press enter to view.
464-
465-
if layer == None:
466-
# probably the defined filter does not work for the query, so try to create the layer without the filter
467-
filter = self.filter
468-
self.filter = ""
469-
layer = self._getSqlLayer()
470-
self.filter = filter
471-
if layer == None:
472-
return
462+
layer = self._getSqlLayer("")
463+
if not layer:
464+
return
473465

474466
dlg = QgsQueryBuilder(layer)
475467
dlg.setSql(self.filter)
476468
if dlg.exec_():
477469
self.filter = dlg.sql()
470+
layer.deleteLater()
Code has comments. Press enter to view.

0 commit comments

Comments
 (0)
Please sign in to comment.