propagate status from childs in Model::insert, Model::update, Model::remove and Model::save

This commit is contained in:
2022-05-24 23:27:07 +02:00
parent 1ad4cb4fbd
commit 12232bf722
3 changed files with 103 additions and 84 deletions

View File

@@ -344,10 +344,10 @@ protected:
virtual ModelData * get_model_data();
virtual bool insert_tree(bool insert_whole_tree);
virtual bool update_tree(bool update_whole_tree);
virtual bool remove_tree(bool remove_whole_tree);
virtual bool save_tree(bool save_whole_tree);
virtual void insert_tree(bool insert_whole_tree);
virtual void update_tree(bool update_whole_tree);
virtual void remove_tree(bool remove_whole_tree);
virtual void save_tree(bool save_whole_tree);
virtual void map_values_from_query();
@@ -1146,18 +1146,24 @@ protected:
template<typename ModelContainerType>
void field_list_iterate_through_childs(ModelContainerType & child_model, const FT & field_type)
{
ModelEnv model_env_local;
model_env_local.copy_global_objects(*model_env);
model_env_local.model = &child_model;
if( model_env->status )
{
ModelEnv model_env_local;
model_env_local.copy_global_objects(*model_env);
model_env_local.model = &child_model;
child_model.model_env = &model_env_local;
child_model.model_env->has_primary_key_set = child_model.has_primary_key_set;
child_model.set_connector(model_connector);
child_model.table();
child_model.model_env = &model_env_local;
child_model.model_env->has_primary_key_set = child_model.has_primary_key_set;
child_model.set_connector(model_connector);
child_model.table();
field_model_iterate_through_childs(child_model, field_type);
field_model_iterate_through_childs(child_model, field_type);
child_model.model_env = nullptr;
if( !model_env_local.status )
model_env->status = false;
child_model.model_env = nullptr;
}
}