diff --git a/lib/NGCP/Panel/Form/EmailTemplate/Reseller.pm b/lib/NGCP/Panel/Form/EmailTemplate/Reseller.pm index 82ff648e97..e4cd1c6c12 100644 --- a/lib/NGCP/Panel/Form/EmailTemplate/Reseller.pm +++ b/lib/NGCP/Panel/Form/EmailTemplate/Reseller.pm @@ -100,8 +100,13 @@ sub validate { name => $name, reseller_id => $reseller_id, }); - my $current_item = $c->stash->{tmpl}; - if ($existing_item && (!$current_item || $existing_item->id != $current_item->id)) { + my $current_item = $self->item ? $self->item : $c->stash->{tmpl}; + my $current_item_id = + $current_item + ? ref $current_item eq 'HASH' + ? $current_item->{id} : $current_item->id + : undef; + if ($existing_item && (!$current_item_id || $existing_item->id != $current_item_id)) { $self->field('name')->add_error($c->loc('This name already exists')); } } diff --git a/lib/NGCP/Panel/Role/API.pm b/lib/NGCP/Panel/Role/API.pm index 65ae565e85..5d35ac8e38 100644 --- a/lib/NGCP/Panel/Role/API.pm +++ b/lib/NGCP/Panel/Role/API.pm @@ -218,6 +218,7 @@ sub validate_form { my $c = $params{c}; my $resource = $params{resource}; my $form = $params{form}; + my $item = $params{item}; my $run = $params{run} // 1; my $form_params = $params{form_params} // {}; @@ -246,7 +247,13 @@ sub validate_form { if($run) { # check keys/vals - $form->process(params => $resource, posted => 1, %{$form_params} ); + $form->process( + params => $resource, + posted => 1, + %{$form_params}, + item => $item, + no_update => 1 + ); unless($form->validated) { my $e = join '; ', map { my $in = (defined $_->input && ref $_->input eq 'HASH' && exists $_->input->{id}) ? $_->input->{id} : ($_->input // ''); @@ -1297,6 +1304,7 @@ sub update_item { c => $c, resource => $resource, form => $form, + item => $item, ); return unless $resource; } diff --git a/lib/NGCP/Panel/Role/API/EmailTemplates.pm b/lib/NGCP/Panel/Role/API/EmailTemplates.pm index 0018c627c7..d989197b26 100644 --- a/lib/NGCP/Panel/Role/API/EmailTemplates.pm +++ b/lib/NGCP/Panel/Role/API/EmailTemplates.pm @@ -79,6 +79,7 @@ sub update_item { c => $c, form => $form, resource => $resource, + item => $item, ); if($c->user->roles eq "admin") { } elsif($c->user->roles eq "reseller") { diff --git a/t/api-rest/testrunner b/t/api-rest/testrunner index e7197b7d30..56e0f37087 100755 --- a/t/api-rest/testrunner +++ b/t/api-rest/testrunner @@ -25,7 +25,7 @@ fi if [ "${SELECT}" = "stable" ] ; then echo "Test selection: ${SELECT}" - SELECT=$(echo ./t/api-rest/api-{all-links,balanceintervals,bannedips,bannedusers,billingfees,billingnetworks,billingprofiles,billingzones,calllists,calls,cert-auth,cfdestinationsets,contracts,conversations,customercontacts,customers,faxes,journals,lnp,ncoslevels,pbxdevicemodels,pbxdevices,peeringgroups,peeringrules,peeringinboundrules,peeringservers,preferences,profilepackages,resellers,rewriterules,rewriterulesets,root,soundsets,subscriberregistrations,subscribers,systemcontacts,threads,topuplogs,trustedsources,valid-patch,vouchers,method-override}.t) + SELECT=$(echo ./t/api-rest/api-{all-links,balanceintervals,bannedips,bannedusers,billingfees,billingnetworks,billingprofiles,billingzones,calllists,calls,cert-auth,cfdestinationsets,contracts,conversations,customercontacts,customers,emailtemplates,faxes,journals,lnp,ncoslevels,pbxdevicemodels,pbxdevices,peeringgroups,peeringrules,peeringinboundrules,peeringservers,preferences,profilepackages,resellers,rewriterules,rewriterulesets,root,soundsets,subscriberregistrations,subscribers,systemcontacts,threads,topuplogs,trustedsources,valid-patch,vouchers,method-override}.t) elif [ "${SELECT}" = "fast" ] ; then echo "Test selection: ${SELECT}" SELECT=$(echo ./t/api-rest/api-{bannedips,bannedusers,billingnetworks,billingzones,calls,cert-auth,cfdestinationsets,ncoslevels,peeringgroups,peeringrules,peeringinboundrules,peeringservers,resellers,rewriterules,root,soundsets,systemcontacts,valid-patch,vouchers,method-override}.t)