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);
($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;

@ -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) = @_;

@ -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);

Loading…
Cancel
Save