Skip to content

Commit ac84326

Browse files
committed
[processing] Fix executing models
1 parent dde48b5 commit ac84326

File tree

8 files changed

+34
-3
lines changed

8 files changed

+34
-3
lines changed

python/core/processing/qgsprocessingalgorithm.sip

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ class QgsProcessingAlgorithm
110110
:rtype: QgsProcessingProvider
111111
%End
112112

113+
void setProvider( QgsProcessingProvider *provider );
114+
113115
private:
114116
QgsProcessingAlgorithm( const QgsProcessingAlgorithm &other );
115117
};

python/plugins/processing/core/Processing.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,11 @@ def runAlgorithm(algOrName, onFinish, *args, **kwargs):
131131
QgsMessageLog.logMessage(Processing.tr('Error: Algorithm {0} not found\n').format(algOrName),
132132
Processing.tr("Processing"))
133133
return
134+
# hack - remove when getCopy is removed
135+
provider = alg.provider()
134136
alg = alg.getCopy()
137+
#hack pt2
138+
alg.setProvider(provider)
135139

136140
if len(args) == 1 and isinstance(args[0], dict):
137141
# Set params by name and try to run the alg even if not all parameter values are provided,

python/plugins/processing/gui/BatchAlgorithmDialog.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ def accept(self):
7373

7474
for row in range(self.mainWidget.tblParameters.rowCount()):
7575
alg = self.alg.getCopy()
76+
# hack - remove when getCopy is removed
77+
alg.setProvider(self.alg.provider())
7678
col = 0
7779
for param in alg.parameters:
7880
if param.hidden:

python/plugins/processing/gui/ProcessingToolbox.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,11 @@ def executeAlgorithmAsBatchProcess(self):
242242
item = self.algorithmTree.currentItem()
243243
if isinstance(item, TreeAlgorithmItem):
244244
alg = QgsApplication.processingRegistry().algorithmById(item.alg.id())
245+
#hack - remove when getCopy is removed
246+
provider = alg.provider()
245247
alg = alg.getCopy()
248+
#hack pt 2
249+
alg.setProvider(provider)
246250
dlg = BatchAlgorithmDialog(alg)
247251
dlg.show()
248252
dlg.exec_()
@@ -261,7 +265,12 @@ def executeAlgorithm(self):
261265
'be run :-( </h3>\n{0}').format(message))
262266
dlg.exec_()
263267
return
268+
269+
# temporary hack - TODO remove this getCopy when parameters are moved from algorithm
270+
provider = alg.provider()
264271
alg = alg.getCopy()
272+
alg.setProvider(provider)
273+
265274
if (alg.getVisibleParametersCount() + alg.getVisibleOutputsCount()) > 0:
266275
dlg = alg.getCustomParametersDialog()
267276
if not dlg:

python/plugins/processing/gui/menus.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,13 @@ def _executeAlgorithm(alg):
202202
'be run :-( </h3>\n{0}').format(message))
203203
dlg.exec_()
204204
return
205+
206+
# hack - remove when getCopy is removed
207+
provider = alg.provider()
205208
alg = alg.getCopy()
209+
#hack pt 2
210+
alg.setProvider(provider)
211+
206212
context = dataobjects.createContext()
207213
if (alg.getVisibleParametersCount() + alg.getVisibleOutputsCount()) > 0:
208214
dlg = alg.getCustomParametersDialog()

python/plugins/processing/modeler/EditModelAction.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,10 @@ def isEnabled(self):
4040
return isinstance(self.itemData, ModelerAlgorithm)
4141

4242
def execute(self):
43-
dlg = ModelerDialog(self.itemData.getCopy())
43+
alg = self.itemData.getCopy()
44+
#hack - remove when getCopy is removed
45+
alg.setProvider(self.itemData.provider())
46+
dlg = ModelerDialog(alg)
4447
dlg.update_model.connect(self.updateModel)
4548
dlg.show()
4649

python/plugins/processing/modeler/ModelerDialog.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,11 @@ def runModel(self):
282282
self.bar.pushMessage("", "Model doesn't contain any algorithm and/or parameter and can't be executed", level=QgsMessageBar.WARNING, duration=5)
283283
return
284284

285+
# hack - remove when above getCopy is removed
286+
provider = self.alg.provider()
285287
alg = self.alg.getCopy()
288+
# hack pt 2
289+
alg.setProvider(provider)
286290
dlg = AlgorithmDialog(alg)
287291
dlg.exec_()
288292

src/core/processing/qgsprocessingalgorithm.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,14 @@ class CORE_EXPORT QgsProcessingAlgorithm
118118
*/
119119
QgsProcessingProvider *provider() const;
120120

121-
private:
122-
123121
/**
124122
* Associates this algorithm with its provider. No transfer of ownership is involved.
125123
*/
124+
//TEMPORARY - remove when algorithms are no longer copied in python code
126125
void setProvider( QgsProcessingProvider *provider );
127126

127+
private:
128+
128129
QgsProcessingProvider *mProvider = nullptr;
129130

130131
// friend class to access setProvider() - we do not want this public!

0 commit comments

Comments
 (0)