Commit
…er (follow f6e3161)
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -209,7 +209,7 @@ def executeSql(self): | |
self.update() | ||
QApplication.restoreOverrideCursor() | ||
|
||
def _getSqlLayer(self): | ||
def _getSqlLayer(self, _filter): | ||
hasUniqueField = self.uniqueColumnCheck.checkState() == Qt.Checked | ||
if hasUniqueField: | ||
if self.allowMultiColumnPk: | ||
|
@@ -258,24 +258,23 @@ def _getSqlLayer(self): | |
|
||
# create the layer | ||
layer = self.db.toSqlLayer(query, geomFieldName, uniqueFieldName, newLayerName, layerType, | ||
self.avoidSelectById.isChecked(), self.filter) | ||
self.avoidSelectById.isChecked(), _filter) | ||
if layer.isValid(): | ||
return layer | ||
else: | ||
return None | ||
|
||
def loadSqlLayer(self): | ||
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) | ||
layer = self._getSqlLayer() | ||
QApplication.restoreOverrideCursor() | ||
|
||
if layer == None: | ||
return | ||
try: | ||
layer = self._getSqlLayer(self.filter) | ||
if layer == None: | ||
return | ||
|
||
from qgis.core import QgsMapLayerRegistry | ||
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) | ||
QgsMapLayerRegistry.instance().addMapLayers([layer], True) | ||
QApplication.restoreOverrideCursor() | ||
from qgis.core import QgsMapLayerRegistry | ||
QgsMapLayerRegistry.instance().addMapLayers([layer], True) | ||
finally: | ||
QApplication.restoreOverrideCursor() | ||
|
||
def fillColumnCombos(self): | ||
query = self._getSqlQuery() | ||
|
@@ -460,18 +459,12 @@ def uniqueTextChanged(self, text): | |
|
||
def setFilter(self): | ||
from qgis.gui import QgsQueryBuilder | ||
layer = self._getSqlLayer() | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
brushtyler
Author
Contributor
|
||
|
||
if layer == None: | ||
# probably the defined filter does not work for the query, so try to create the layer without the filter | ||
filter = self.filter | ||
self.filter = "" | ||
layer = self._getSqlLayer() | ||
self.filter = filter | ||
if layer == None: | ||
return | ||
layer = self._getSqlLayer("") | ||
if not layer: | ||
return | ||
|
||
dlg = QgsQueryBuilder(layer) | ||
dlg.setSql(self.filter) | ||
if dlg.exec_(): | ||
self.filter = dlg.sql() | ||
layer.deleteLater() | ||
This comment has been minimized.
Sorry, something went wrong.
SebDieBln
Contributor
|
The idea was to use the already defined filter first, if it works. I often have the situation where an unfiltered query gives an invalid layer because of duplicate keys, different geometry types or something else.