Align peering handling to usual controller flow.

Use navigation utils.
Make required fields required.
agranig/1_0_subfix
Andreas Granig 13 years ago
parent bee006efcd
commit 072d5b8b61

@ -156,10 +156,6 @@ sub create :Chained('group_list') :PathPart('create') :Args(0) {
sub servers_list :Chained('base') :PathPart('servers') :CaptureArgs(0) {
my ($self, $c) = @_;
my $sr_list_uri = $c->uri_for_action(
'/peering/servers_root', [$c->req->captures->[0]]);
$c->stash(sr_list_uri => $sr_list_uri);
$c->stash(template => 'peering/servers_rules.tt');
}
@ -182,28 +178,35 @@ sub servers_ajax :Chained('servers_list') :PathPart('s_ajax') :Args(0) {
sub servers_create :Chained('servers_list') :PathPart('create') :Args(0) {
my ($self, $c) = @_;
my $posted = ($c->request->method eq 'POST');
my $form = NGCP::Panel::Form::PeeringServer->new;
$form->process(
posted => ($c->request->method eq 'POST'),
posted => $posted,
params => $c->request->params,
action => $c->uri_for_action('/peering/servers_create', [$c->req->captures->[0]]),
);
if($form->validated) {
NGCP::Panel::Utils::Navigation::check_form_buttons(
c => $c,
form => $form,
fields => {},
back_uri => $c->req->uri
);
if($posted && $form->validated) {
try {
$c->stash->{group_result}->voip_peer_hosts->create( $form->fif );
$c->stash->{group_result}->voip_peer_hosts->create($form->values);
$self->_sip_lcr_reload;
$c->flash(messages => [{type => 'success', text => 'Peering server successfully created'}]);
} catch (DBIx::Class::Exception $e) {
$c->log->error("failed to create peering server: $e");
$c->flash(messages => [{type => 'error', text => 'Failed to create peering server'}]);
$c->log->info("Create failed: " . $e);
};
$c->response->redirect($c->stash->{sr_list_uri});
return;
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]));
}
$c->stash(close_target => $c->stash->{sr_list_uri});
$c->stash(servers_create_flag => 1);
$c->stash(servers_form => $form);
$c->stash(
close_target => $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]),
servers_create_flag => 1,
servers_form => $form
);
}
sub servers_base :Chained('servers_list') :PathPart('') :CaptureArgs(1) {
@ -233,27 +236,33 @@ sub servers_edit :Chained('servers_base') :PathPart('edit') :Args(0) {
my $posted = ($c->request->method eq 'POST');
my $form = NGCP::Panel::Form::PeeringServer->new;
$form->process(
posted => 1,
params => $posted ? $c->request->params : $c->stash->{server},
action => $c->uri_for_action('/peering/servers_edit', $c->req->captures)
posted => $posted,
params => $c->request->params,
item => $c->stash->{server},
);
NGCP::Panel::Utils::Navigation::check_form_buttons(
c => $c,
form => $form,
fields => {},
back_uri => $c->req->uri
);
if($posted && $form->validated) {
try {
$c->stash->{server_result}->update($form->fif);
$c->stash->{server_result}->update($form->values);
$self->_sip_lcr_reload;
$c->flash(messages => [{type => 'success', text => 'Peering server successfully updated'}]);
} catch (DBIx::Class::Exception $e) {
$c->log->info("failed to update peering server: $e");
$c->flash(messages => [{type => 'error', text => 'Failed to update peering server'}]);
$c->log->info("Update failed: " . $e);
};
$c->response->redirect($c->stash->{sr_list_uri});
return;
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]));
}
$c->stash(close_target => $c->stash->{sr_list_uri});
$c->stash(servers_form => $form);
$c->stash(servers_edit_flag => 1);
$c->stash(
close_target => $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]),
servers_form => $form,
servers_edit_flag => 1
);
}
sub servers_delete :Chained('servers_base') :PathPart('delete') :Args(0) {
@ -264,10 +273,10 @@ sub servers_delete :Chained('servers_base') :PathPart('delete') :Args(0) {
$self->_sip_lcr_reload;
$c->flash(messages => [{type => 'success', text => 'Peering server successfully deleted'}]);
} catch (DBIx::Class::Exception $e) {
$c->log->error("failed to delete peering server: $e");
$c->flash(rules_messages => [{type => 'error', text => 'Failed to delete peering server'}]);
$c->log->info("Delete failed: " . $e);
};
$c->response->redirect($c->stash->{sr_list_uri});
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]));
}
sub servers_preferences_list :Chained('servers_base') :PathPart('preferences') :CaptureArgs(0) {
@ -373,29 +382,36 @@ sub rules_ajax :Chained('rules_list') :PathPart('r_ajax') :Args(0) {
sub rules_create :Chained('rules_list') :PathPart('create') :Args(0) {
my ($self, $c) = @_;
my $posted = ($c->request->method eq 'POST');
my $form = NGCP::Panel::Form::PeeringRule->new;
$form->process(
posted => ($c->request->method eq 'POST'),
posted => $posted,
params => $c->request->params,
action => $c->uri_for_action('/peering/rules_create', [$c->req->captures->[0]]),
);
if($form->validated) {
NGCP::Panel::Utils::Navigation::check_form_buttons(
c => $c,
form => $form,
fields => {},
back_uri => $c->req->uri
);
if($posted && $form->validated) {
try {
$c->stash->{group_result}->voip_peer_rules->create( $form->fif );
$c->stash->{group_result}->voip_peer_rules->create($form->values);
$self->_sip_lcr_reload;
$c->flash(rules_messages => [{type => 'success', text => 'Peering rule successfully created'}]);
} catch (DBIx::Class::Exception $e) {
$c->log->error("failed to create peering rule: $e");
$c->flash(rules_messages => [{type => 'error', text => 'Failed to create peering rule'}]);
$c->log->info("Create failed: " . $e);
};
$c->response->redirect($c->stash->{sr_list_uri});
return;
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]));
}
$c->stash(close_target => $c->stash->{sr_list_uri});
$c->stash(rules_create_flag => 1);
$c->stash(rules_form => $form);
$c->stash(
close_target => $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]),
rules_create_flag => 1,
rules_form => $form,
);
}
sub rules_base :Chained('rules_list') :PathPart('') :CaptureArgs(1) {
@ -425,26 +441,33 @@ sub rules_edit :Chained('rules_base') :PathPart('edit') :Args(0) {
my $posted = ($c->request->method eq 'POST');
my $form = NGCP::Panel::Form::PeeringRule->new;
$form->process(
posted => 1,
params => $posted ? $c->request->params : $c->stash->{rule},
action => $c->uri_for_action('/peering/rules_edit', $c->req->captures)
posted => $posted,
params => $c->request->params,
item => $c->stash->{rule},
);
NGCP::Panel::Utils::Navigation::check_form_buttons(
c => $c,
form => $form,
fields => {},
back_uri => $c->req->uri
);
if($posted && $form->validated) {
try {
$c->stash->{rule_result}->update($form->fif);
$c->stash->{rule_result}->update($form->values);
$self->_sip_lcr_reload;
$c->flash(rules_messages => [{type => 'success', text => 'Peering rule successfully changed'}]);
} catch (DBIx::Class::Exception $e) {
$c->log->error("failed to update peering rule: $e");
$c->flash(rules_messages => [{type => 'error', text => 'Failed to update peering rule'}]);
$c->log->info("Update failed: " . $e);
};
$c->response->redirect($c->stash->{sr_list_uri});
return;
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]));
}
$c->stash(close_target => $c->stash->{sr_list_uri});
$c->stash(rules_form => $form);
$c->stash(rules_edit_flag => 1);
$c->stash(
close_target => $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]),
rules_form => $form,
rules_edit_flag => 1,
);
}
sub rules_delete :Chained('rules_base') :PathPart('delete') :Args(0) {
@ -455,10 +478,10 @@ sub rules_delete :Chained('rules_base') :PathPart('delete') :Args(0) {
$self->_sip_lcr_reload;
$c->flash(rules_messages => [{type => 'success', text => 'Peering rule successfully deleted'}]);
} catch (DBIx::Class::Exception $e) {
$c->log->info("failed to delete peering rule: $e");
$c->flash(rules_messages => [{type => 'error', text => 'Failed to delete peering rule'}]);
$c->log->info("Delete failed: " . $e);
};
$c->response->redirect($c->stash->{sr_list_uri});
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]));
}
sub _sip_lcr_reload {

@ -212,7 +212,20 @@ sub edit :Chained('base') :PathPart('edit') :Args(0) {
try {
$form->params->{contract_id} = delete $form->params->{contract}{id};
delete $form->params->{contract};
$c->stash->{reseller}->first->update($form->params);
$c->stash->{reseller}->first->update($form->params);
# if a reseller is terminated, we need to terminate all customers
# and subscribers
if($c->stash->{reseller}->first->status eq "terminated") {
for my $customer($c->stash->{reseller}->first->contracts->all) {
$customer->update({ status => 'terminated' });
for my $subscriber($customer->voip_subscribers->all) {
$subscriber->update({ status => 'terminated' });
$subscriber->provisioning_voip_subscriber->delete;
}
}
}
delete $c->session->{created_objects}->{contract};
delete $c->session->{edit_contract_id};
$c->flash(messages => [{type => 'success', text => 'Reseller successfully updated'}]);
@ -230,22 +243,6 @@ sub edit :Chained('base') :PathPart('edit') :Args(0) {
return;
}
sub delete :Chained('base') :PathPart('delete') :Args(0) {
my ($self, $c) = @_;
$c->detach('/denied_page')
if($c->user->read_only);
try {
$c->stash->{reseller}->first->delete;
$c->flash(messages => [{type => 'success', text => 'Reseller successfully deleted'}]);
} catch($e) {
$c->log->error($e);
$c->flash(messages => [{type => 'error', text => 'Failed to delete reseller'}]);
}
$c->response->redirect($c->uri_for());
}
sub details :Chained('base') :PathPart('details') :Args(0) {
my ($self, $c) = @_;
$c->stash(template => 'reseller/details.tt');

@ -32,6 +32,7 @@ has_field 'port' => (
type => 'PosInteger',
max_range => 65535,
default => '5060',
required => 1,
);
has_field 'transport' => (
@ -46,7 +47,9 @@ has_field 'transport' => (
has_field 'weight' => (
type => 'PosInteger',
required => 1,
max_range => 25,
default => 1,
);
has_field 'save' => (

Loading…
Cancel
Save