MT#57564 convert deprecated timezone names

* timezone names are converted to their links, and if a link
  is found (means that the current name is deprecated), it's
  validated and stored as the link.

Change-Id: I6348659178400a96eaadd70f79b792c4fa25d7d4
mr11.4
Kirill Solomko 2 years ago
parent be7193e75b
commit 391aa3fbc3

@ -129,6 +129,9 @@ sub POST :Allow {
); );
$resource->{country} = $resource->{country}{id}; $resource->{country} = $resource->{country}{id};
$resource->{timezone} = $resource->{timezone}{name}; $resource->{timezone} = $resource->{timezone}{name};
$resource->{timezone} = NGCP::Panel::Utils::DateTime::get_timezone_link($c, $resource->{timezone});
my $reseller_id; my $reseller_id;
if($c->user->roles eq "admin") { if($c->user->roles eq "admin") {
$reseller_id = $resource->{reseller_id}; $reseller_id = $resource->{reseller_id};

@ -118,6 +118,8 @@ sub POST :Allow {
$resource->{country} = $resource->{country}{id}; $resource->{country} = $resource->{country}{id};
$resource->{timezone} = $resource->{timezone}{name}; $resource->{timezone} = $resource->{timezone}{name};
$resource->{timezone} = NGCP::Panel::Utils::DateTime::get_timezone_link($c, $resource->{timezone});
my $now = NGCP::Panel::Utils::DateTime::current_local; my $now = NGCP::Panel::Utils::DateTime::current_local;
$resource->{create_timestamp} = $now; $resource->{create_timestamp} = $now;
$resource->{modify_timestamp} = $now; $resource->{modify_timestamp} = $now;

@ -57,6 +57,7 @@ sub deflate_timezone { # deflate: default value: clean and return empty string
my $c = $self->form->ctx; my $c = $self->form->ctx;
$value = NGCP::Panel::Utils::DateTime::strip_empty_timezone_name($c, $value); $value = NGCP::Panel::Utils::DateTime::strip_empty_timezone_name($c, $value);
$value = NGCP::Panel::Utils::DateTime::get_timezone_link($c, $value);
return $value; return $value;
} }

@ -10,6 +10,7 @@ use boolean qw(true);
use Data::HAL qw(); use Data::HAL qw();
use Data::HAL::Link qw(); use Data::HAL::Link qw();
use HTTP::Status qw(:constants); use HTTP::Status qw(:constants);
use NGCP::Panel::Utils::DateTime;
sub _item_rs { sub _item_rs {
my ($self, $c) = @_; my ($self, $c) = @_;
@ -96,9 +97,17 @@ sub contact_by_id {
return $contact_rs->find($id); return $contact_rs->find($id);
} }
sub process_form_resource {
my($self,$c, $item, $old_resource, $resource, $form, $process_extras) = @_;
$resource->{timezone} = NGCP::Panel::Utils::DateTime::get_timezone_link($c, $resource->{timezone});
}
sub update_contact { sub update_contact {
my ($self, $c, $contact, $old_resource, $resource, $form) = @_; my ($self, $c, $contact, $old_resource, $resource, $form) = @_;
$self->process_form_resource($c, $contact, $old_resource, $resource, $form);
$resource->{country}{id} = delete $resource->{country}; $resource->{country}{id} = delete $resource->{country};
$resource->{timezone}{name} = delete $resource->{timezone}; $resource->{timezone}{name} = delete $resource->{timezone};
$form //= $self->get_form($c); $form //= $self->get_form($c);

@ -377,6 +377,12 @@ sub prepare_resource {
} }
sub process_form_resource {
my($self,$c, $item, $old_resource, $resource, $form, $process_extras) = @_;
$resource->{timezone} = NGCP::Panel::Utils::DateTime::get_timezone_link($c, $resource->{timezone});
}
sub update_item { sub update_item {
my ($self, $c, $schema, $item, $full_resource, $resource, $form) = @_; my ($self, $c, $schema, $item, $full_resource, $resource, $form) = @_;
@ -390,6 +396,8 @@ sub update_item {
my $groupmembers = $full_resource->{groupmembers}; my $groupmembers = $full_resource->{groupmembers};
my $prov_subscriber = $subscriber->provisioning_voip_subscriber; my $prov_subscriber = $subscriber->provisioning_voip_subscriber;
$self->process_form_resource($c, $item, $full_resource, $resource, $form);
if($subscriber->provisioning_voip_subscriber->is_pbx_pilot && !is_true($resource->{is_pbx_pilot})) { if($subscriber->provisioning_voip_subscriber->is_pbx_pilot && !is_true($resource->{is_pbx_pilot})) {
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Cannot revoke is_pbx_pilot status from a subscriber."); $self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Cannot revoke is_pbx_pilot status from a subscriber.");
return; return;

@ -10,6 +10,7 @@ use boolean qw(true);
use Data::HAL qw(); use Data::HAL qw();
use Data::HAL::Link qw(); use Data::HAL::Link qw();
use HTTP::Status qw(:constants); use HTTP::Status qw(:constants);
use NGCP::Panel::Utils::DateTime;
sub _item_rs { sub _item_rs {
my ($self, $c) = @_; my ($self, $c) = @_;
@ -82,9 +83,17 @@ sub contact_by_id {
return $contact_rs->find($id); return $contact_rs->find($id);
} }
sub process_form_resource {
my($self,$c, $item, $old_resource, $resource, $form, $process_extras) = @_;
$resource->{timezone} = NGCP::Panel::Utils::DateTime::get_timezone_link($c, $resource->{timezone});
}
sub update_contact { sub update_contact {
my ($self, $c, $contact, $old_resource, $resource, $form) = @_; my ($self, $c, $contact, $old_resource, $resource, $form) = @_;
$self->process_form_resource($c, $contact, $old_resource, $resource, $form);
$resource->{country}{id} = delete $resource->{country}; $resource->{country}{id} = delete $resource->{country};
$resource->{timezone}{name} = delete $resource->{timezone}; $resource->{timezone}{name} = delete $resource->{timezone};
$form //= $self->get_form($c); $form //= $self->get_form($c);

@ -46,6 +46,16 @@ sub strip_empty_timezone_name {
return $value; return $value;
} }
sub get_timezone_link {
my ($c, $value) = @_;
my %links = DateTime::TimeZone->links;
return $value unless $value;
return $links{$value} // $value;
}
sub get_default_timezone_name { sub get_default_timezone_name {
my($c, $parent_owner_type, $parent_owner_id) = @_; my($c, $parent_owner_type, $parent_owner_id) = @_;
$parent_owner_type //= ''; $parent_owner_type //= '';

@ -627,6 +627,7 @@ sub create_subscriber {
} }
$params->{timezone} = $params->{timezone}->{name} if 'HASH' eq ref $params->{timezone}; $params->{timezone} = $params->{timezone}->{name} if 'HASH' eq ref $params->{timezone};
$params->{timezone} = NGCP::Panel::Utils::DateTime::get_timezone_link($c, $params->{timezone});
if ($params->{timezone} && !NGCP::Panel::Utils::DateTime::is_valid_timezone_name($params->{timezone})) { if ($params->{timezone} && !NGCP::Panel::Utils::DateTime::is_valid_timezone_name($params->{timezone})) {
die("invalid timezone name '$params->{timezone}' detected"); die("invalid timezone name '$params->{timezone}' detected");
} }

Loading…
Cancel
Save