mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-09 00:35:20 -05:00
[processing] correctly handle advanced parameters when exporting model
to Python (fix #32579)
This commit is contained in:
parent
213df8df23
commit
7fa054c19b
@ -427,13 +427,21 @@ QStringList QgsProcessingModelAlgorithm::asPythonCode( const QgsProcessing::Pyth
|
|||||||
importLines << QStringLiteral( "from qgis.core import QgsProcessing" );
|
importLines << QStringLiteral( "from qgis.core import QgsProcessing" );
|
||||||
importLines << QStringLiteral( "from qgis.core import QgsProcessingAlgorithm" );
|
importLines << QStringLiteral( "from qgis.core import QgsProcessingAlgorithm" );
|
||||||
importLines << QStringLiteral( "from qgis.core import QgsProcessingMultiStepFeedback" );
|
importLines << QStringLiteral( "from qgis.core import QgsProcessingMultiStepFeedback" );
|
||||||
|
|
||||||
|
bool hasAdvancedParams = false;
|
||||||
for ( const QgsProcessingParameterDefinition *def : params )
|
for ( const QgsProcessingParameterDefinition *def : params )
|
||||||
{
|
{
|
||||||
|
if ( def->flags() & QgsProcessingParameterDefinition::FlagAdvanced )
|
||||||
|
hasAdvancedParams = true;
|
||||||
|
|
||||||
const QString importString = QgsApplication::processingRegistry()->parameterType( def->type() )->pythonImportString();
|
const QString importString = QgsApplication::processingRegistry()->parameterType( def->type() )->pythonImportString();
|
||||||
if ( !importString.isEmpty() && !importLines.contains( importString ) )
|
if ( !importString.isEmpty() && !importLines.contains( importString ) )
|
||||||
importLines << importString;
|
importLines << importString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( hasAdvancedParams )
|
||||||
|
importLines << QStringLiteral( "from qgis.core import QgsProcessingParameterDefinition" );
|
||||||
|
|
||||||
lines << QStringLiteral( "import processing" );
|
lines << QStringLiteral( "import processing" );
|
||||||
lines << QString() << QString();
|
lines << QString() << QString();
|
||||||
|
|
||||||
@ -460,9 +468,18 @@ QStringList QgsProcessingModelAlgorithm::asPythonCode( const QgsProcessing::Pyth
|
|||||||
defClone->setName( friendlyName );
|
defClone->setName( friendlyName );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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() );
|
lines << indent + indent + QStringLiteral( "self.addParameter(%1)" ).arg( defClone->asPythonString() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
lines << QString();
|
lines << QString();
|
||||||
lines << indent + QStringLiteral( "def processAlgorithm(self, parameters, context, model_feedback):" );
|
lines << indent + QStringLiteral( "def processAlgorithm(self, parameters, context, model_feedback):" );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user