TT#21819 Allow to adjust resource before form validation.

Add separate pre-process method

Change-Id: I939d4d516de7d3d955b281b6afb6c59006771c8d
changes/76/15876/1
Irina Peshinskaya 8 years ago
parent 2bcac80e96
commit 38ef5dafb2

@ -928,6 +928,8 @@ sub update_item {
my ($form_exceptions, $process_extras); my ($form_exceptions, $process_extras);
($form, $form_exceptions, $process_extras) = @{$params}{qw/form 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){ if(!$form){
($form, $form_exceptions) = $self->get_form($c, 'edit'); ($form, $form_exceptions) = $self->get_form($c, 'edit');
} }
@ -936,6 +938,7 @@ sub update_item {
if(!$form_exceptions && $form->can('form_exceptions')){ if(!$form_exceptions && $form->can('form_exceptions')){
$form_exceptions = $form->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( return unless $self->validate_form(
c => $c, c => $c,
resource => $resource, resource => $resource,
@ -945,10 +948,6 @@ sub update_item {
return unless $resource; 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 $self->process_form_resource($c, $item, $old_resource, $resource, $form, $process_extras);
return unless $resource; return unless $resource;
return unless $self->check_duplicate($c, $item, $old_resource, $resource, $form, $process_extras); return unless $self->check_duplicate($c, $item, $old_resource, $resource, $form, $process_extras);
@ -980,7 +979,7 @@ sub check_resource{
return 1; 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 $ft = File::Type->new();
# my $content_type = $ft->mime_type(${$process_extras->{binary_ref}}); # my $content_type = $ft->mime_type(${$process_extras->{binary_ref}});
# if($type eq 'mac') { # 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 #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 #used in update_item
sub pre_process_form_resource {
my($self, $c, $item, $old_resource, $resource, $form) = @_;
return $resource;
}
sub process_form_resource { sub process_form_resource {
my($self, $c, $item, $old_resource, $resource, $form) = @_; my($self, $c, $item, $old_resource, $resource, $form) = @_;
return $resource; return $resource;

@ -120,6 +120,12 @@ sub resource_from_item {
return \%resource; 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{ sub process_form_resource{
my($self,$c, $item, $old_resource, $resource, $form, $process_extras) = @_; my($self,$c, $item, $old_resource, $resource, $form, $process_extras) = @_;

@ -110,6 +110,7 @@ sub post {
{ {
my ($form, $form_exceptions) = $self->get_form($c, 'add'); my ($form, $form_exceptions) = $self->get_form($c, 'add');
my $method_config = $self->config->{action}->{POST}; my $method_config = $self->config->{action}->{POST};
my $process_extras= {};
my ($resource) = $self->get_valid_data( my ($resource) = $self->get_valid_data(
c => $c, c => $c,
method => 'POST', method => 'POST',
@ -122,14 +123,13 @@ sub post {
if(!$form_exceptions && $form->can('form_exceptions')){ if(!$form_exceptions && $form->can('form_exceptions')){
$form_exceptions = $form->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( last unless $self->validate_form(
c => $c, c => $c,
resource => $resource, resource => $resource,
form => $form, form => $form,
$form_exceptions ? (exceptions => $form_exceptions) : (), $form_exceptions ? (exceptions => $form_exceptions) : (),
); );
my $process_extras= {};
last unless $self->process_form_resource($c, undef, undef, $resource, $form, $process_extras); last unless $self->process_form_resource($c, undef, undef, $resource, $form, $process_extras);
last unless $resource; last unless $resource;
last unless $self->check_duplicate($c, undef, undef, $resource, $form, $process_extras); last unless $self->check_duplicate($c, undef, undef, $resource, $form, $process_extras);

Loading…
Cancel
Save