Skip to content

Commit b619dcb

Browse files
committedDec 14, 2017
Refactor fields configuration in the modeler does not insist on layer
Inside the modeler, there is not enough knowledge about the layer on which the refactor fields algorithm will run. Let's be graceful with error messages here therefore.
1 parent 3abff0e commit b619dcb

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed
 

‎python/plugins/processing/algs/qgis/FieldsMapper.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,8 @@ def prepareAlgorithm(self, parameters, context, feedback):
137137
if expression.hasParserError():
138138
raise QgsProcessingException(
139139
self.tr(u'Parser error in expression "{}": {}')
140-
.format(str(expression.expression()),
141-
str(expression.parserErrorString())))
140+
.format(expression.expression(),
141+
expression.parserErrorString()))
142142
self.expressions.append(expression)
143143
return True
144144

@@ -160,8 +160,8 @@ def processFeature(self, feature, context, feedback):
160160
if expression.hasEvalError():
161161
raise QgsProcessingException(
162162
self.tr(u'Evaluation error in expression "{}": {}')
163-
.format(str(expression.expression()),
164-
str(expression.parserErrorString())))
163+
.format(expression.expression(),
164+
expression.parserErrorString()))
165165
attributes.append(value)
166166
feature.setAttributes(attributes)
167167
self._row_number += 1

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,8 +225,7 @@ def loadLayerFields(self, layer):
225225

226226
self._mapping = []
227227
if layer is not None:
228-
dp = layer.dataProvider()
229-
for field in dp.fields():
228+
for field in layer.fields():
230229
self._mapping.append(self.newField(field))
231230

232231
self.endResetModel()
@@ -263,6 +262,7 @@ def createEditor(self, parent, option, index):
263262
editor.registerExpressionContextGenerator(index.model().contextGenerator())
264263
editor.fieldChanged.connect(self.on_expression_fieldChange)
265264
editor.setAutoFillBackground(True)
265+
editor.setAllowEvalErrors(self.parent().dialogType == DIALOG_MODELER)
266266
return editor
267267

268268
def setEditorData(self, editor, index):
@@ -303,6 +303,7 @@ def __init__(self, parent=None):
303303

304304
self.layerCombo.setAllowEmptyLayer(True)
305305
self.layerCombo.setFilters(QgsMapLayerProxyModel.VectorLayer)
306+
self.dialogType = None
306307

307308
def configure(self):
308309
self.model = FieldsMappingModel()
@@ -472,7 +473,9 @@ def __init__(self, *args, **kwargs):
472473
self._layer = None
473474

474475
def createWidget(self):
475-
return FieldsMappingPanel()
476+
panel = FieldsMappingPanel()
477+
panel.dialogType = self.dialogType
478+
return panel
476479

477480
def postInitialize(self, wrappers):
478481
for wrapper in wrappers:

0 commit comments

Comments
 (0)
Please sign in to comment.