mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-15 00:04:00 -04:00
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.
This commit is contained in:
parent
3abff0e938
commit
b619dcb00a
@ -137,8 +137,8 @@ class FieldsMapper(QgisFeatureBasedAlgorithm):
|
||||
if expression.hasParserError():
|
||||
raise QgsProcessingException(
|
||||
self.tr(u'Parser error in expression "{}": {}')
|
||||
.format(str(expression.expression()),
|
||||
str(expression.parserErrorString())))
|
||||
.format(expression.expression(),
|
||||
expression.parserErrorString()))
|
||||
self.expressions.append(expression)
|
||||
return True
|
||||
|
||||
@ -160,8 +160,8 @@ class FieldsMapper(QgisFeatureBasedAlgorithm):
|
||||
if expression.hasEvalError():
|
||||
raise QgsProcessingException(
|
||||
self.tr(u'Evaluation error in expression "{}": {}')
|
||||
.format(str(expression.expression()),
|
||||
str(expression.parserErrorString())))
|
||||
.format(expression.expression(),
|
||||
expression.parserErrorString()))
|
||||
attributes.append(value)
|
||||
feature.setAttributes(attributes)
|
||||
self._row_number += 1
|
||||
|
@ -225,8 +225,7 @@ class FieldsMappingModel(QAbstractTableModel):
|
||||
|
||||
self._mapping = []
|
||||
if layer is not None:
|
||||
dp = layer.dataProvider()
|
||||
for field in dp.fields():
|
||||
for field in layer.fields():
|
||||
self._mapping.append(self.newField(field))
|
||||
|
||||
self.endResetModel()
|
||||
@ -263,6 +262,7 @@ class ExpressionDelegate(QStyledItemDelegate):
|
||||
editor.registerExpressionContextGenerator(index.model().contextGenerator())
|
||||
editor.fieldChanged.connect(self.on_expression_fieldChange)
|
||||
editor.setAutoFillBackground(True)
|
||||
editor.setAllowEvalErrors(self.parent().dialogType == DIALOG_MODELER)
|
||||
return editor
|
||||
|
||||
def setEditorData(self, editor, index):
|
||||
@ -303,6 +303,7 @@ class FieldsMappingPanel(BASE, WIDGET):
|
||||
|
||||
self.layerCombo.setAllowEmptyLayer(True)
|
||||
self.layerCombo.setFilters(QgsMapLayerProxyModel.VectorLayer)
|
||||
self.dialogType = None
|
||||
|
||||
def configure(self):
|
||||
self.model = FieldsMappingModel()
|
||||
@ -472,7 +473,9 @@ class FieldsMappingWidgetWrapper(WidgetWrapper):
|
||||
self._layer = None
|
||||
|
||||
def createWidget(self):
|
||||
return FieldsMappingPanel()
|
||||
panel = FieldsMappingPanel()
|
||||
panel.dialogType = self.dialogType
|
||||
return panel
|
||||
|
||||
def postInitialize(self, wrappers):
|
||||
for wrapper in wrappers:
|
||||
|
Loading…
x
Reference in New Issue
Block a user