TT#75000 fix rewrite rule move in replicated table

Change-Id: I192393c4aceeaf2030787bc20ec698d89ea939c8
changes/63/37663/3
Rene Krenn 6 years ago
parent 77b3834bae
commit c64a645027

@ -32,7 +32,7 @@ sub set_list :Chained('/') :PathPart('rewrite') :CaptureArgs(0) {
{ name => 'name', search => 1, title => $c->loc('Name') },
{ name => 'description', search => 1, title => $c->loc('Description') },
]);
$c->stash(template => 'rewrite/set_list.tt');
}
@ -125,7 +125,7 @@ sub set_edit :Chained('set_base') :PathPart('edit') {
sub set_delete :Chained('set_base') :PathPart('delete') {
my ($self, $c) = @_;
try {
$c->stash->{set_result}->delete;
NGCP::Panel::Utils::Rewrite::sip_dialplan_reload($c);
@ -258,7 +258,7 @@ sub set_create :Chained('set_list') :PathPart('create') :Args(0) {
sub rules_list :Chained('set_base') :PathPart('rules') :CaptureArgs(0) {
my ( $self, $c ) = @_;
my $rules_rs = $c->stash->{set_result}->voip_rewrite_rules;
$c->stash(rules_rs => $rules_rs);
$c->stash(rules_uri => $c->uri_for_action("/rewrite/rules_root", [$c->req->captures->[0]]));
@ -269,11 +269,11 @@ sub rules_list :Chained('set_base') :PathPart('rules') :CaptureArgs(0) {
sub rules_root :Chained('rules_list') :PathPart('') :Args(0) {
my ($self, $c) = @_;
my $rules_rs = $c->stash->{rules_rs};
my $param_move = $c->req->params->{move};
my $param_where = $c->req->params->{where};
if ($param_move && is_int($param_move) && $param_where &&
(my $elem = $rules_rs->find($param_move))) {
@ -287,11 +287,18 @@ sub rules_root :Chained('rules_list') :PathPart('') :Args(0) {
})->first;
try {
if ($swap_elem) {
my $tmp_priority = $swap_elem->priority;
$swap_elem->priority($elem->priority);
$elem->priority($tmp_priority);
#3way swap required because trigger relies on natural key of kamailio.dialplan.
my @tmp_priority = (
$c->stash->{rules_rs}->get_column('priority')->max() + 1,
$swap_elem->priority,
$elem->priority
);
$swap_elem->priority($tmp_priority[0]);
$swap_elem->update;
$elem->priority($tmp_priority[1]);
$elem->update;
$swap_elem->priority($tmp_priority[2]);
$swap_elem->update;
} elsif($use_next) {
my $last_priority = $c->stash->{rules_rs}->get_column('priority')->max() || 49;
$elem->priority(int($last_priority) + 1);
@ -310,28 +317,28 @@ sub rules_root :Chained('rules_list') :PathPart('') :Args(0) {
);
}
}
my @caller_in = $rules_rs->search({
field => 'caller',
direction => 'in',
},{
order_by => { -asc => 'priority' },
})->all;
my @callee_in = $rules_rs->search({
field => 'callee',
direction => 'in',
},{
order_by => { -asc => 'priority' },
})->all;
my @caller_out = $rules_rs->search({
field => 'caller',
direction => 'out',
},{
order_by => { -asc => 'priority' },
})->all;
my @callee_out = $rules_rs->search({
field => 'callee',
direction => 'out',
@ -352,7 +359,7 @@ sub rules_root :Chained('rules_list') :PathPart('') :Args(0) {
},{
order_by => { -asc => 'priority' },
})->all;
for my $row (@caller_in, @callee_in, @caller_out, @callee_out, @caller_lnp, @callee_lnp) {
my $mp = $row->match_pattern;
my $rp = $row->replace_pattern;
@ -362,7 +369,7 @@ sub rules_root :Chained('rules_list') :PathPart('') :Args(0) {
$row->match_pattern($mp);
$row->replace_pattern($rp);
}
$c->stash(rules => {
caller_in => \@caller_in,
callee_in => \@callee_in,
@ -439,7 +446,7 @@ sub rules_edit :Chained('rules_base') :PathPart('edit') {
sub rules_delete :Chained('rules_base') :PathPart('delete') {
my ($self, $c) = @_;
try {
$c->stash->{rule_result}->delete;
NGCP::Panel::Utils::Rewrite::sip_dialplan_reload($c);

Loading…
Cancel
Save