Skip to content

Commit e74e836

Browse files
committedMay 18, 2018
Use parameter's name instead of description to save sql query
1 parent 610d99c commit e74e836

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed
 

‎python/plugins/processing/algs/qgis/ui/ExecuteSQLWidget.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def __init__(self, dialog):
8282

8383
def insert(self):
8484
if self.mExpressionWidget.currentText():
85-
exp = '[% {} %]'.format(self.mExpressionWidget.currentText())
85+
exp = '[%{}%]'.format(self.mExpressionWidget.currentText())
8686
self.mText.insertPlainText(exp)
8787

8888
def setValue(self, value):
@@ -95,6 +95,17 @@ def setValue(self, value):
9595
and v.source() == QgsProcessingModelChildParameterSource.ExpressionText:
9696
text = v.expressionText()
9797

98+
# replace parameter's name by expression (diverging after model save)
99+
names = QgsExpression.referencedVariables(text)
100+
101+
strings = self.dialog.getAvailableValuesOfType(
102+
[QgsProcessingParameterString, QgsProcessingParameterNumber], [])
103+
model_params = [(self.dialog.resolveValueDescription(s), s) for s in strings]
104+
105+
for k, v in model_params:
106+
if v.parameterName() in names:
107+
text = text.replace('[% @{} %]'.format(v.parameterName()), '[% @{} %]'.format(k))
108+
98109
self.mText.setPlainText(text)
99110

100111
def value(self):
@@ -113,8 +124,19 @@ def _expressionValues(self, text):
113124
model_params = [(self.dialog.resolveValueDescription(s), s) for s in strings]
114125

115126
variables = QgsExpression.referencedVariables(text)
127+
128+
# replace description by parameter's name (diverging after model save)
129+
descriptions = QgsExpression.referencedVariables(text)
130+
131+
for k, v in model_params:
132+
if k in descriptions:
133+
text = text.replace('[% @{} %]'.format(k), '[% @{} %]'.format(v.parameterName()))
134+
135+
src = QgsProcessingModelChildParameterSource.fromExpressionText(text)
136+
137+
# add parameters currently used by the expression
116138
expression_values = []
117-
expression_values.append(QgsProcessingModelChildParameterSource.fromExpressionText(text))
139+
expression_values.append(src)
118140

119141
for k, v in model_params:
120142
if k in variables:

0 commit comments

Comments
 (0)
Please sign in to comment.