MT#8279 Inflate/deflate block list input in CSC

agranig/8279-csc-normalize-number
Andreas Granig 12 years ago
parent c2e116a825
commit cf519fb44b

@ -761,8 +761,6 @@ sub preferences_base :Chained('base') :PathPart('preferences') :CaptureArgs(1) {
attribute_id => $pref_id,
subscriber_id => $c->stash->{subscriber}->provisioning_voip_subscriber->id
});
my @values = $c->stash->{preference}->get_column("value")->all;
$c->stash->{preference_values} = \@values;
$c->stash(template => 'subscriber/preferences.tt');
}

@ -65,6 +65,13 @@ sub load_preference_list {
my @group_prefs = $group->voip_preferences->all;
foreach my $pref(@group_prefs) {
my @values = @{
exists $pref_values->{$pref->attribute}
? $pref_values->{$pref->attribute}
: []
};
next unless(scalar @values);
if($pref->attribute eq "rewrite_rule_set") {
my $tmp;
$pref->{rwrs_id} = $pref_values->{rewrite_caller_in_dpid} &&
@ -98,17 +105,28 @@ sub load_preference_list {
$pref->{man_allowed_ips_rs} = $c->model('DB')->resultset('voip_allowed_ip_groups')
->search_rs({ group_id => $pref_values->{man_allowed_ips_grp} });
}
elsif($c->stash->{subscriber} &&
($pref->attribute eq "block_in_list" || $pref->attribute eq "block_out_list")) {
foreach my $v(@values) {
my $prefix = "";
if($v =~ /^\#/) {
$v =~ s/^\#//;
$prefix = "#";
}
if($c->user->roles eq "subscriberadmin" || $c->user->roles eq "subscriber") {
$v = NGCP::Panel::Utils::Subscriber::apply_rewrite(
c => $c, subscriber => $c->stash->{subscriber}, number => $v, direction => 'caller_out'
);
}
$v = $prefix . $v;
}
}
if($pref->data_type eq "enum") {
$pref->{enums} = [];
push @{ $pref->{enums} },
$pref->voip_preferences_enums->all;
}
my @values = @{
exists $pref_values->{$pref->attribute}
? $pref_values->{$pref->attribute}
: []
};
next unless(scalar @values);
if($pref->max_occur != 1) {
$pref->{value} = \@values;
} else {
@ -134,6 +152,64 @@ sub create_preference_form {
my $man_aip_grp_rs;
my $man_aip_group_id;
my $delete_param = $c->request->params->{delete};
my $deactivate_param = $c->request->params->{deactivate};
my $activate_param = $c->request->params->{activate};
my $param_id = $delete_param || $deactivate_param || $activate_param;
# only one parameter is processed at a time (?)
if($param_id) {
my $rs = $pref_rs->find($param_id);
if($rs) {
if($rs->attribute_id != $c->stash->{preference_meta}->id) {
# Invalid param (dom_pref does not belong to current pref)
} elsif($delete_param) {
$rs->delete();
} elsif ($deactivate_param) {
$rs->update({value => "#".$rs->value});
} elsif ($activate_param) {
my $new_value = $rs->value;
$new_value =~ s/^#//;
$rs->update({value => $new_value});
}
}
}
my $delete_aig_param = $c->request->params->{delete_aig};
if($delete_aig_param) {
my $result = $aip_grp_rs->find($delete_aig_param);
if($result) {
$result->delete;
unless ($aip_grp_rs->first) { #its empty
my $allowed_ips_grp_preference = $pref_rs->search({
'attribute.attribute' => 'allowed_ips_grp'
},{
join => 'attribute'
})->first;
$allowed_ips_grp_preference->delete
if (defined $allowed_ips_grp_preference);
}
}
}
my $delete_man_aig_param = $c->request->params->{delete_man_aig};
if($delete_man_aig_param) {
my $result = $man_aip_grp_rs->find($delete_man_aig_param);
if($result) {
$result->delete;
unless ($man_aip_grp_rs->first) { #its empty
my $man_allowed_ips_grp_preference = $pref_rs->search({
'attribute.attribute' => 'man_allowed_ips_grp'
},{
join => 'attribute'
})->first;
$man_allowed_ips_grp_preference->delete
if (defined $man_allowed_ips_grp_preference);
}
}
}
$c->stash->{preference_values} = [
$c->stash->{preference}->get_column("value")->all
];
my $preselected_value = undef;
if ($c->stash->{preference_meta}->attribute eq "rewrite_rule_set") {
my $rewrite_caller_in_dpid = $pref_rs->search({
@ -188,6 +264,16 @@ sub create_preference_form {
$man_aip_grp_rs = $c->model('DB')->resultset('voip_allowed_ip_groups')
->search({ group_id => $man_aip_group_id });
}
} elsif($c->stash->{subscriber} &&
($c->stash->{preference_meta}->attribute eq "block_in_list" || $c->stash->{preference_meta}->attribute eq "block_out_list")) {
foreach my $v(@{ $c->stash->{preference_values} }) {
$v =~ s/^\#//;
if($c->user->roles eq "subscriberadmin" || $c->user->roles eq "subscriber") {
$v = NGCP::Panel::Utils::Subscriber::apply_rewrite(
c => $c, subscriber => $c->stash->{subscriber}, number => $v, direction => 'caller_out'
);
}
}
} elsif ($c->stash->{preference_meta}->max_occur == 1) {
$preselected_value = $c->stash->{preference_values}->[0];
}
@ -303,14 +389,38 @@ sub create_preference_form {
return 1;
}
} elsif ($c->stash->{preference_meta}->max_occur != 1) {
if($c->stash->{subscriber} &&
($c->stash->{preference_meta}->attribute eq "block_in_list" || $c->stash->{preference_meta}->attribute eq "block_out_list")) {
my $v = $form->params->{$c->stash->{preference_meta}->attribute};
if($c->user->roles eq "subscriberadmin" || $c->user->roles eq "subscriber") {
$v =~ s/^(.+?)([*\[].*$)/$1/; # strip any trailing shell pattern stuff
my $suffix = $2 // "";
$form->params->{$c->stash->{preference_meta}->attribute} = NGCP::Panel::Utils::Subscriber::apply_rewrite(
c => $c, subscriber => $c->stash->{subscriber}, number => $v, direction => 'callee_in'
);
# rewrite it back for immediate display
$v = $form->params->{$c->stash->{preference_meta}->attribute};
$v = NGCP::Panel::Utils::Subscriber::apply_rewrite(
c => $c, subscriber => $c->stash->{subscriber}, number => $v, direction => 'caller_out'
);
# restore stripped shell pattern stuff
$form->params->{$c->stash->{preference_meta}->attribute} .= $suffix;
$v .= $suffix;
}
push @{ $c->stash->{preference_values} }, $v;
}
try {
$pref_rs->create({
attribute_id => $c->stash->{preference_meta}->id,
value => $form->field($c->stash->{preference_meta}->attribute)->value,
value => $form->params->{$c->stash->{preference_meta}->attribute},
});
} catch($e) {
$c->log->error("failed to create preference $attribute: $e");
$c->flash(messages => [{type => 'error', text => $c->loc('Failed to delete preference [_1].', $attribute)}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Failed to create preference [_1].', $attribute)}]);
$c->response->redirect($base_uri);
return 1;
}
@ -450,58 +560,6 @@ sub create_preference_form {
OUT:
my $delete_param = $c->request->params->{delete};
my $deactivate_param = $c->request->params->{deactivate};
my $activate_param = $c->request->params->{activate};
my $param_id = $delete_param || $deactivate_param || $activate_param;
# only one parameter is processed at a time (?)
if($param_id) {
my $rs = $pref_rs->find($param_id);
if($rs->attribute_id != $c->stash->{preference_meta}->id) {
# Invalid param (dom_pref does not belong to current pref)
} elsif($delete_param) {
$rs->delete();
} elsif ($deactivate_param) {
$rs->update({value => "#".$rs->value});
} elsif ($activate_param) {
my $new_value = $rs->value;
$new_value =~ s/^#//;
$rs->update({value => $new_value});
}
}
my $delete_aig_param = $c->request->params->{delete_aig};
if($delete_aig_param) {
my $result = $aip_grp_rs->find($delete_aig_param);
if($result) {
$result->delete;
unless ($aip_grp_rs->first) { #its empty
my $allowed_ips_grp_preference = $pref_rs->search({
'attribute.attribute' => 'allowed_ips_grp'
},{
join => 'attribute'
})->first;
$allowed_ips_grp_preference->delete
if (defined $allowed_ips_grp_preference);
}
}
}
my $delete_man_aig_param = $c->request->params->{delete_man_aig};
if($delete_man_aig_param) {
my $result = $man_aip_grp_rs->find($delete_man_aig_param);
if($result) {
$result->delete;
unless ($man_aip_grp_rs->first) { #its empty
my $man_allowed_ips_grp_preference = $pref_rs->search({
'attribute.attribute' => 'man_allowed_ips_grp'
},{
join => 'attribute'
})->first;
$man_allowed_ips_grp_preference->delete
if (defined $man_allowed_ips_grp_preference);
}
}
}
$form->process if ($posted && $form->validated);
$c->stash(form => $form,
aip_grp_rs => $aip_grp_rs,

@ -8,6 +8,7 @@
helper.edit_preference = edit_preference;
helper.preference = preference;
helper.preference_meta = preference_meta;
helper.preference_values = preference_values;
helper.pref_groups = pref_groups;
helper.form = form;
helper.base_uri = c.uri_for(contract.id,'preferences');

@ -8,6 +8,7 @@
helper.edit_preference = edit_preference;
helper.preference = preference;
helper.preference_meta = preference_meta;
helper.preference_values = preference_values;
helper.pref_groups = pref_groups;
helper.form = form;
helper.base_uri = c.uri_for(domain.id,'preferences');

@ -185,12 +185,14 @@
</div>
[% ELSIF helper.preference_meta.max_occur != 1 %]
<div class="modal-body">
[% i = 0 -%]
[% FOREACH v IN helper.preference.all %]
[% val = helper.preference_values.$i -%]
<div class="row-fluid">
[% IF v.value.substr(0,1) == '#' %]
<input type="text" value="[% v.value.substr(1) %]" disabled="disabled" class="ngcp-entry-disabled"/>
<input type="text" value="[% val %]" disabled="disabled" class="ngcp-entry-disabled"/>
[% ELSE %]
<input type="text" value="[% v.value %]" disabled="disabled"/>
<input type="text" value="[% val %]" disabled="disabled"/>
[% END %]
<a class="btn btn-primary pull-right" href="?delete=[% v.id %]"><i class="icon-trash"></i></a>
[% IF v.value.substr(0,1) == '#' %]
@ -199,6 +201,7 @@
<a class="btn btn-primary pull-right" style="margin:0 5px 0 5px" href="?deactivate=[% v.id %]"><i class="icon-ban-circle"></i></a>
[% END %]
</div>
[% i = i + 1 -%]
[% END %]
<form action="[% helper.form.action %]" method="post">
[% helper.form.field(helper.preference_meta.attribute).render %]

@ -6,6 +6,7 @@
helper.edit_preference = edit_preference;
helper.preference = preference;
helper.preference_meta = preference_meta;
helper.preference_values = preference_values;
helper.pref_groups = pref_groups;
helper.form = form;
helper.base_uri = c.uri_for_action("/peering/servers_preferences_root",

@ -13,6 +13,7 @@
helper.edit_preference = edit_preference;
helper.preference = preference;
helper.preference_meta = preference_meta;
helper.preference_values = preference_values;
helper.pref_groups = pref_groups;
helper.form = form;
helper.base_uri = c.uri_for(subscriber.id,'preferences');

Loading…
Cancel
Save