Skip to content

Commit

Permalink
[processing] correctly handle advanced parameters when exporting model
Browse files Browse the repository at this point in the history
to Python (fix #32579)
  • Loading branch information
alexbruy committed Nov 2, 2019
1 parent 7769983 commit 1b18b13
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion src/core/processing/models/qgsprocessingmodelalgorithm.cpp
Expand Up @@ -417,13 +417,21 @@ QStringList QgsProcessingModelAlgorithm::asPythonCode( const QgsProcessing::Pyth
importLines << QStringLiteral( "from qgis.core import QgsProcessing" );
importLines << QStringLiteral( "from qgis.core import QgsProcessingAlgorithm" );
importLines << QStringLiteral( "from qgis.core import QgsProcessingMultiStepFeedback" );

bool hasAdvancedParams = false;
for ( const QgsProcessingParameterDefinition *def : params )
{
if ( def->flags() & QgsProcessingParameterDefinition::FlagAdvanced )
hasAdvancedParams = true;

const QString importString = QgsApplication::processingRegistry()->parameterType( def->type() )->pythonImportString();
if ( !importString.isEmpty() && !importLines.contains( importString ) )
importLines << importString;
}

if ( hasAdvancedParams )
importLines << QStringLiteral( "from qgis.core import QgsProcessingParameterDefinition" );

lines << QStringLiteral( "import processing" );
lines << QString() << QString();

Expand All @@ -450,7 +458,16 @@ QStringList QgsProcessingModelAlgorithm::asPythonCode( const QgsProcessing::Pyth
defClone->setName( friendlyName );
}

lines << indent + indent + QStringLiteral( "self.addParameter(%1)" ).arg( defClone->asPythonString() );
if ( defClone->flags() & QgsProcessingParameterDefinition::FlagAdvanced )
{
lines << indent + indent + QStringLiteral( "param = %1" ).arg( defClone->asPythonString() );
lines << indent + indent + QStringLiteral( "param.setFlags(param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)" );
lines << indent + indent + QStringLiteral( "self.addParameter(param)" );
}
else
{
lines << indent + indent + QStringLiteral( "self.addParameter(%1)" ).arg( defClone->asPythonString() );
}
}
}

Expand Down

0 comments on commit 1b18b13

Please sign in to comment.