Skip to content

Commit a74b626

Browse files
committed
[dbmanager] Fix stored queries retrieve
Fixes #19802 - DB Manager saved SQL statements are saved empty
1 parent 5b7e60a commit a74b626

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

python/plugins/db_manager/dlg_sql_layer_window.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from builtins import zip
2525
from builtins import next
2626
from builtins import str
27+
from hashlib import md5
2728

2829
from qgis.PyQt.QtCore import Qt, pyqtSignal
2930
from qgis.PyQt.QtWidgets import QDialog, QWidget, QAction, QApplication, QStyledItemDelegate
@@ -181,6 +182,9 @@ def __init__(self, iface, layer, parent=None):
181182
if uri.selectAtIdDisabled():
182183
self.avoidSelectById.setCheckState(Qt.Checked)
183184

185+
def getQueryHash(self, name):
186+
return 'q%s' % md5(name.encode('utf8')).hexdigest()
187+
184188
def updatePresetsCombobox(self):
185189
self.presetCombo.clear()
186190

@@ -199,8 +203,8 @@ def storePreset(self):
199203
if query == "":
200204
return
201205
name = self.presetName.text()
202-
QgsProject.instance().writeEntry('DBManager', 'savedQueries/q' + str(name.__hash__()) + '/name', name)
203-
QgsProject.instance().writeEntry('DBManager', 'savedQueries/q' + str(name.__hash__()) + '/query', query)
206+
QgsProject.instance().writeEntry('DBManager', 'savedQueries/' + self.getQueryHash(name) + '/name', name)
207+
QgsProject.instance().writeEntry('DBManager', 'savedQueries/' + self.getQueryHash(name) + '/query', query)
204208
index = self.presetCombo.findText(name)
205209
if index == -1:
206210
self.presetCombo.addItem(name)
@@ -210,13 +214,13 @@ def storePreset(self):
210214

211215
def deletePreset(self):
212216
name = self.presetCombo.currentText()
213-
QgsProject.instance().removeEntry('DBManager', 'savedQueries/q' + str(name.__hash__()))
217+
QgsProject.instance().removeEntry('DBManager', 'savedQueries/q' + self.getQueryHash(name))
214218
self.presetCombo.removeItem(self.presetCombo.findText(name))
215219
self.presetCombo.setCurrentIndex(-1)
216220

217221
def loadPreset(self, name):
218-
query = QgsProject.instance().readEntry('DBManager', 'savedQueries/q' + str(name.__hash__()) + '/query')[0]
219-
name = QgsProject.instance().readEntry('DBManager', 'savedQueries/q' + str(name.__hash__()) + '/name')[0]
222+
query = QgsProject.instance().readEntry('DBManager', 'savedQueries/' + self.getQueryHash(name) + '/query')[0]
223+
name = QgsProject.instance().readEntry('DBManager', 'savedQueries/' + self.getQueryHash(name) + '/name')[0]
220224
self.editSql.setText(query)
221225

222226
def clearSql(self):

python/plugins/db_manager/dlg_sql_window.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from builtins import zip
2525
from builtins import next
2626
from builtins import str
27+
from hashlib import md5
2728

2829
from qgis.PyQt.QtCore import Qt, pyqtSignal
2930
from qgis.PyQt.QtWidgets import QDialog, QWidget, QAction, QApplication, QInputDialog, QStyledItemDelegate, QTableWidgetItem
@@ -197,6 +198,9 @@ def writeQueryHistory(self, sql, affectedRows, secs):
197198

198199
self.populateQueryHistory()
199200

201+
def getQueryHash(self, name):
202+
return 'q%s' % md5(name.encode('utf8')).hexdigest()
203+
200204
def updatePresetsCombobox(self):
201205
self.presetCombo.clear()
202206

@@ -214,9 +218,9 @@ def storePreset(self):
214218
query = self._getSqlQuery()
215219
if query == "":
216220
return
217-
name = self.presetName.text()
218-
QgsProject.instance().writeEntry('DBManager', 'savedQueries/q' + str(name.__hash__()) + '/name', name)
219-
QgsProject.instance().writeEntry('DBManager', 'savedQueries/q' + str(name.__hash__()) + '/query', query)
221+
name = str(self.presetName.text())
222+
QgsProject.instance().writeEntry('DBManager', 'savedQueries/' + self.getQueryHash(name) + '/name', name)
223+
QgsProject.instance().writeEntry('DBManager', 'savedQueries/' + self.getQueryHash(name) + '/query', query)
220224
index = self.presetCombo.findText(name)
221225
if index == -1:
222226
self.presetCombo.addItem(name)
@@ -226,13 +230,13 @@ def storePreset(self):
226230

227231
def deletePreset(self):
228232
name = self.presetCombo.currentText()
229-
QgsProject.instance().removeEntry('DBManager', 'savedQueries/q' + str(name.__hash__()))
233+
QgsProject.instance().removeEntry('DBManager', 'savedQueries/' + self.getQueryHash(name))
230234
self.presetCombo.removeItem(self.presetCombo.findText(name))
231235
self.presetCombo.setCurrentIndex(-1)
232236

233237
def loadPreset(self, name):
234-
query = QgsProject.instance().readEntry('DBManager', 'savedQueries/q' + str(name.__hash__()) + '/query')[0]
235-
name = QgsProject.instance().readEntry('DBManager', 'savedQueries/q' + str(name.__hash__()) + '/name')[0]
238+
query = QgsProject.instance().readEntry('DBManager', 'savedQueries/' + self.getQueryHash(name) + '/query')[0]
239+
name = QgsProject.instance().readEntry('DBManager', 'savedQueries/' + self.getQueryHash(name) + '/name')[0]
236240
self.editSql.setText(query)
237241

238242
def loadAsLayerToggled(self, checked):

0 commit comments

Comments
 (0)