diff --git a/lib/NGCP/Panel/Role/API.pm b/lib/NGCP/Panel/Role/API.pm index 5b6844cb1c..b2192b7899 100644 --- a/lib/NGCP/Panel/Role/API.pm +++ b/lib/NGCP/Panel/Role/API.pm @@ -928,6 +928,8 @@ sub update_item { my ($form_exceptions, $process_extras); ($form, $form_exceptions, $process_extras) = @{$params}{qw/form form_exceptions process_extras/}; + $old_resource //= $self->resource_from_item($c, $item, $form); + $process_extras //= {}; if(!$form){ ($form, $form_exceptions) = $self->get_form($c, 'edit'); } @@ -936,6 +938,7 @@ sub update_item { if(!$form_exceptions && $form->can('form_exceptions')){ $form_exceptions = $form->form_exceptions; } + last unless $self->pre_process_form_resource($c, $item, $old_resource, $resource, $form, $process_extras); return unless $self->validate_form( c => $c, resource => $resource, @@ -945,10 +948,6 @@ sub update_item { return unless $resource; } - $old_resource //= $self->resource_from_item($c, $item, $form); - - $process_extras //= {}; - return unless $self->process_form_resource($c, $item, $old_resource, $resource, $form, $process_extras); return unless $resource; return unless $self->check_duplicate($c, $item, $old_resource, $resource, $form, $process_extras); @@ -980,7 +979,7 @@ sub check_resource{ return 1; } -#process_form_resource - added as method for custom preparation form data,like: +#pre_process_form_resource, process_form_resource - added as method for custom preparation form data,like: # my $ft = File::Type->new(); # my $content_type = $ft->mime_type(${$process_extras->{binary_ref}}); # if($type eq 'mac') { @@ -993,6 +992,11 @@ sub check_resource{ # #etc. Method still can be used as exit point, if form data processing can be performed due to incorrect input data #used in update_item +sub pre_process_form_resource { + my($self, $c, $item, $old_resource, $resource, $form) = @_; + return $resource; +} + sub process_form_resource { my($self, $c, $item, $old_resource, $resource, $form) = @_; return $resource; diff --git a/lib/NGCP/Panel/Role/API/PbxDeviceModels.pm b/lib/NGCP/Panel/Role/API/PbxDeviceModels.pm index bb5f6fb4c3..7a5be7fc42 100644 --- a/lib/NGCP/Panel/Role/API/PbxDeviceModels.pm +++ b/lib/NGCP/Panel/Role/API/PbxDeviceModels.pm @@ -120,6 +120,12 @@ sub resource_from_item { return \%resource; } +sub pre_process_form_resource{ + my($self,$c, $item, $old_resource, $resource, $form, $process_extras) = @_; + #API form doesn't consider default value somehow + $resource->{type} //= 'phone'; +} + sub process_form_resource{ my($self,$c, $item, $old_resource, $resource, $form, $process_extras) = @_; diff --git a/lib/NGCP/Panel/Role/Entities.pm b/lib/NGCP/Panel/Role/Entities.pm index 9017569bac..5270cc75bc 100644 --- a/lib/NGCP/Panel/Role/Entities.pm +++ b/lib/NGCP/Panel/Role/Entities.pm @@ -110,6 +110,7 @@ sub post { { my ($form, $form_exceptions) = $self->get_form($c, 'add'); my $method_config = $self->config->{action}->{POST}; + my $process_extras= {}; my ($resource) = $self->get_valid_data( c => $c, method => 'POST', @@ -122,14 +123,13 @@ sub post { if(!$form_exceptions && $form->can('form_exceptions')){ $form_exceptions = $form->form_exceptions; } + last unless $self->pre_process_form_resource($c, undef, undef, $resource, $form, $process_extras); last unless $self->validate_form( c => $c, resource => $resource, form => $form, $form_exceptions ? (exceptions => $form_exceptions) : (), ); - - my $process_extras= {}; last unless $self->process_form_resource($c, undef, undef, $resource, $form, $process_extras); last unless $resource; last unless $self->check_duplicate($c, undef, undef, $resource, $form, $process_extras);