F #5204: Support for restricted attributes of type Vector

(cherry picked from commit 59b5ee8dd1ccb91161ce1ee83e99f11cbe9f1b95)
This commit is contained in:
Ruben S. Montero committed 2017-09-06 16:06:15 +02:00
1 parent 71fe08ec94
commit c9d22b8b40
17 files changed
+396 -497

No files matched your search

+27 -16
View File
@@ -172,6 +172,8 @@ void PoolObjectSQL::clear_template_error_message()
int PoolObjectSQL::replace_template(
const string& tmpl_str, bool keep_restricted, string& error)
{
string ra;
Template * old_tmpl = 0;
Template * new_tmpl = get_new_template();
@@ -189,19 +191,22 @@ int PoolObjectSQL::replace_template(
if (obj_template != 0)
{
if ( keep_restricted && new_tmpl->check_restricted(ra, obj_template) )
{
error = "Tried to change restricted attribute: " + ra;
delete new_tmpl;
return -1;
}
old_tmpl = new Template(*obj_template);
}
if (keep_restricted && new_tmpl->has_restricted())
else if ( keep_restricted && new_tmpl->check_restricted(ra) )
{
new_tmpl->remove_restricted();
error = "Tried to set restricted attribute: " + ra;
if (obj_template != 0)
{
obj_template->remove_all_except_restricted();
new_tmpl->merge(obj_template);
}
delete new_tmpl;
return -1;
}
delete obj_template;
@@ -237,6 +242,7 @@ int PoolObjectSQL::append_template(
{
Template * old_tmpl = 0;
Template * new_tmpl = get_new_template();
string rname;
if ( new_tmpl == 0 )
{
@@ -250,21 +256,26 @@ int PoolObjectSQL::append_template(
return -1;
}
if (keep_restricted)
{
new_tmpl->remove_restricted();
}
if ( obj_template != 0 )
{
old_tmpl = new Template(*obj_template);
if (keep_restricted && new_tmpl->check_restricted(rname, obj_template))
{
error ="User Template includes a restricted attribute " + rname;
delete new_tmpl;
return -1;
}
obj_template->merge(new_tmpl);
delete new_tmpl;
}
else
{
if (keep_restricted && new_tmpl->check_restricted(rname))
{
error ="User Template includes a restricted attribute " + rname;
delete new_tmpl;
return -1;
}
obj_template = new_tmpl;
}