Skip to content

Commit 08231b8

Browse files
authoredNov 12, 2016
Merge pull request #3742 from nirvn/processing_fix_hasdependencies
[processing] check for parent alg dependencies in hasDependencies()
2 parents c180cf3 + be2223f commit 08231b8

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed
 

‎python/plugins/processing/modeler/ModelerAlgorithm.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,10 @@ def hasDependencies(self, name):
360360
elif isinstance(value, ValueFromOutput):
361361
if value.alg == name:
362362
return True
363+
if alg.name != name:
364+
for dep in alg.dependencies:
365+
if (dep == name):
366+
return True
363367
return False
364368

365369
def getDependsOnAlgorithms(self, name):

‎python/plugins/processing/tests/ModelerTest.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@
2727

2828
from qgis.testing import start_app, unittest
2929

30-
from processing.modeler.ModelerAlgorithm import (ModelerAlgorithm, ModelerParameter)
30+
from processing.modeler.ModelerAlgorithm import (Algorithm,
31+
ModelerAlgorithm,
32+
ModelerParameter,
33+
ModelerOutput,
34+
ValueFromOutput)
3135
from processing.modeler.ModelerParametersDialog import (ModelerParametersDialog)
3236
from processing.core.parameters import (ParameterFile,
3337
ParameterNumber,
@@ -66,6 +70,26 @@ def testModelerParametersDialogAvailableValuesOfType(self):
6670
self.assertEqual(set(p.name for p in dlg.getAvailableValuesOfType([ParameterString, ParameterNumber, ParameterFile])),
6771
set(['string', 'string2', 'number', 'file']))
6872

73+
def testModelerAlgorithmHasDependencies(self):
74+
# test hasDependencies from ModelerAlgorithm
75+
76+
m = ModelerAlgorithm()
77+
78+
a = Algorithm("qgis:clip")
79+
m.addAlgorithm(a)
80+
a2 = Algorithm("qgis:clip")
81+
m.addAlgorithm(a2)
82+
83+
# test parent algorithm dependency
84+
self.assertEqual(m.hasDependencies('QGISCLIP_1'), False)
85+
a2.dependencies = ['QGISCLIP_1']
86+
self.assertEqual(m.hasDependencies('QGISCLIP_1'), True)
87+
88+
# test output algorithm dependency
89+
a2.dependencies = []
90+
a.outputs['OUTPUT'] = ModelerOutput('out')
91+
a2.params['INPUT'] = ValueFromOutput('QGISCLIP_1', 'OUTPUT')
92+
self.assertEqual(m.hasDependencies('QGISCLIP_1'), True)
6993

7094
if __name__ == '__main__':
7195
unittest.main()

0 commit comments

Comments
 (0)