From be2223fed38b0a2c7af26a207e5d8154adbdcdc9 Mon Sep 17 00:00:00 2001 From: nirvn Date: Fri, 11 Nov 2016 12:21:39 +0700 Subject: [PATCH] [processing] check for parent alg dependencies in hasDependencies() --- .../processing/modeler/ModelerAlgorithm.py | 4 +++ .../plugins/processing/tests/ModelerTest.py | 26 ++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/python/plugins/processing/modeler/ModelerAlgorithm.py b/python/plugins/processing/modeler/ModelerAlgorithm.py index 15d5aafff6e..3af5081806f 100644 --- a/python/plugins/processing/modeler/ModelerAlgorithm.py +++ b/python/plugins/processing/modeler/ModelerAlgorithm.py @@ -360,6 +360,10 @@ class ModelerAlgorithm(GeoAlgorithm): elif isinstance(value, ValueFromOutput): if value.alg == name: return True + if alg.name != name: + for dep in alg.dependencies: + if (dep == name): + return True return False def getDependsOnAlgorithms(self, name): diff --git a/python/plugins/processing/tests/ModelerTest.py b/python/plugins/processing/tests/ModelerTest.py index 7b4e9a71f3a..a76366a60a8 100644 --- a/python/plugins/processing/tests/ModelerTest.py +++ b/python/plugins/processing/tests/ModelerTest.py @@ -27,7 +27,11 @@ __revision__ = '$Format:%H$' from qgis.testing import start_app, unittest -from processing.modeler.ModelerAlgorithm import (ModelerAlgorithm, ModelerParameter) +from processing.modeler.ModelerAlgorithm import (Algorithm, + ModelerAlgorithm, + ModelerParameter, + ModelerOutput, + ValueFromOutput) from processing.modeler.ModelerParametersDialog import (ModelerParametersDialog) from processing.core.parameters import (ParameterFile, ParameterNumber, @@ -66,6 +70,26 @@ class ModelerTest(unittest.TestCase): self.assertEqual(set(p.name for p in dlg.getAvailableValuesOfType([ParameterString, ParameterNumber, ParameterFile])), set(['string', 'string2', 'number', 'file'])) + def testModelerAlgorithmHasDependencies(self): + # test hasDependencies from ModelerAlgorithm + + m = ModelerAlgorithm() + + a = Algorithm("qgis:clip") + m.addAlgorithm(a) + a2 = Algorithm("qgis:clip") + m.addAlgorithm(a2) + + # test parent algorithm dependency + self.assertEqual(m.hasDependencies('QGISCLIP_1'), False) + a2.dependencies = ['QGISCLIP_1'] + self.assertEqual(m.hasDependencies('QGISCLIP_1'), True) + + # test output algorithm dependency + a2.dependencies = [] + a.outputs['OUTPUT'] = ModelerOutput('out') + a2.params['INPUT'] = ValueFromOutput('QGISCLIP_1', 'OUTPUT') + self.assertEqual(m.hasDependencies('QGISCLIP_1'), True) if __name__ == '__main__': unittest.main()