Skip to content

Commit d1985b3

Browse files
author
radosuav
committed
[Processing] Improve the robustness of models when the parameters in the included algorithms change
1 parent 7019db8 commit d1985b3

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

python/plugins/processing/modeler/ModelerAlgorithm.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
from PyQt4.QtCore import QCoreApplication, QPointF
3636
from PyQt4.QtGui import QIcon
3737
from qgis.core import QgsRasterLayer, QgsVectorLayer
38+
from qgis.gui import QgsMessageBar
39+
from qgis.utils import iface
3840
from processing.core.GeoAlgorithm import GeoAlgorithm
3941
from processing.modeler.WrongModelException import WrongModelException
4042
from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
@@ -332,7 +334,13 @@ def prepareAlgorithm(self, alg):
332334
algInstance = alg.algorithm
333335
for param in algInstance.parameters:
334336
if not param.hidden:
335-
value = self.resolveValue(alg.params[param.name])
337+
if param.name in alg.params:
338+
value = self.resolveValue(alg.params[param.name])
339+
else:
340+
iface.messageBar().pushMessage(self.tr("Warning"),
341+
self.tr("Parameter %s in algorithm %s in the model is run with default value! Edit the model to make sure that this is correct." % (param.name, alg.name)),
342+
QgsMessageBar.WARNING, 4)
343+
value = None
336344
if value is None and isinstance(param, ParameterExtent):
337345
value = self.getMinCoveringExtent()
338346
# We allow unexistent filepaths, since that allows

python/plugins/processing/modeler/ModelerParametersDialog.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,10 @@ def setPreviousValues(self):
410410
if param.hidden:
411411
continue
412412
widget = self.valueItems[param.name]
413-
value = alg.params[param.name]
413+
if param.name in alg.params:
414+
value = alg.params[param.name]
415+
else:
416+
value = None
414417
if isinstance(param, (
415418
ParameterRaster,
416419
ParameterVector,

python/plugins/processing/modeler/ModelerScene.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,10 @@ def paintModel(self, model):
9898
idx = 0
9999
for parameter in alg.algorithm.parameters:
100100
if not parameter.hidden:
101-
value = alg.params[parameter.name]
101+
if parameter.name in alg.params:
102+
value = alg.params[parameter.name]
103+
else:
104+
value = None
102105
sourceItems = self.getItemsFromParamValue(value)
103106
for sourceItem, sourceIdx in sourceItems:
104107
arrow = ModelerArrowItem(sourceItem, sourceIdx, self.algItems[alg.name], idx)

0 commit comments

Comments
 (0)