mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Python adjustments (#7809)
* #7797 Well Targets: Add scripting capability * #7794 Python : Do not update childField or childFieldArray * #7797: Python - Add scripting to well path collection - Extend the pdmobject.py with method add_object() - allow objects to be created from Python in well path collections - add well targets to modelled well path * #7795 Python : Make sure referenced generated classes are defined * #7810 StimPlanModel: clean-up python generation * Python : Always use empty string as default value for ptrFieldValue It can happen that a ptrField is assigned to a pointer on object construction. (FaciesProperties) Make sure that constructor always assigns an empty string. Co-authored-by: magnesj <magnesj@users.noreply.github.com> Co-authored-by: Kristian Bendiksen <kristian.bendiksen@gmail.com>
This commit is contained in:
@@ -59,7 +59,7 @@ CAF_PDM_CODE_GENERATOR_SOURCE_INIT( PdmPythonGenerator, "py" );
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const
|
||||
QString caf::PdmPythonGenerator::generate( PdmObjectFactory* factory, std::vector<QString>& errorMessages ) const
|
||||
{
|
||||
QString generatedCode;
|
||||
QTextStream out( &generatedCode );
|
||||
@@ -92,6 +92,7 @@ QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const
|
||||
std::map<QString, std::map<QString, std::pair<QString, QString>>> classAttributesGenerated;
|
||||
std::map<QString, std::map<QString, QString>> classMethodsGenerated;
|
||||
std::map<QString, QString> classCommentsGenerated;
|
||||
std::set<QString> dataTypesInChildFields;
|
||||
|
||||
// First generate all attributes and comments to go into each object
|
||||
for ( std::shared_ptr<PdmObject> object : dummyObjects )
|
||||
@@ -181,9 +182,14 @@ QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const
|
||||
}
|
||||
else
|
||||
{
|
||||
QString valueString;
|
||||
QTextStream valueStream( &valueString );
|
||||
scriptability->readFromField( valueStream, true, true );
|
||||
QString valueString;
|
||||
|
||||
// Always make sure the default value for a ptrField is empty string
|
||||
if ( !field->hasPtrReferencedObjects() )
|
||||
{
|
||||
QTextStream valueStream( &valueString );
|
||||
scriptability->readFromField( valueStream, true, true );
|
||||
}
|
||||
if ( valueString.isEmpty() ) valueString = QString( "\"\"" );
|
||||
valueString = pythonifyDataValue( valueString );
|
||||
|
||||
@@ -203,6 +209,8 @@ QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const
|
||||
QString scriptDataType =
|
||||
PdmObjectScriptingCapabilityRegister::scriptClassNameFromClassKeyword( dataType );
|
||||
|
||||
dataTypesInChildFields.insert( scriptDataType );
|
||||
|
||||
QString commentDataType = field->xmlCapability()->isVectorField()
|
||||
? QString( "List of %1" ).arg( scriptDataType )
|
||||
: scriptDataType;
|
||||
@@ -385,6 +393,16 @@ QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const
|
||||
out << " return all_classes[class_keyword]\n";
|
||||
out << " return None\n";
|
||||
|
||||
// Check if all referenced data types are exported as classes
|
||||
for ( const auto& scriptDataType : dataTypesInChildFields )
|
||||
{
|
||||
if ( classesWritten.count( scriptDataType ) == 0 )
|
||||
{
|
||||
QString errorText = "No export for data type " + scriptDataType;
|
||||
errorMessages.push_back( errorText );
|
||||
}
|
||||
}
|
||||
|
||||
return generatedCode;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user