|
|
|
|
@ -32,7 +32,8 @@ sub base :Chained('/') :PathPart('device') :CaptureArgs(0) {
|
|
|
|
|
$reseller_id = $c->user->voip_subscriber->contract->contact->reseller_id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
my $devmod_rs = $c->model('DB')->resultset('autoprov_devices')->search({ reseller_id => $reseller_id });
|
|
|
|
|
my $devmod_rs = $c->model('DB')->resultset('autoprov_devices');
|
|
|
|
|
$reseller_id and $devmod_rs = $devmod_rs->search({ reseller_id => $reseller_id });
|
|
|
|
|
$c->stash->{devmod_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [
|
|
|
|
|
{ name => 'id', search => 1, title => $c->loc('#') },
|
|
|
|
|
{ name => 'reseller.name', search => 1, title => $c->loc('Reseller') },
|
|
|
|
|
@ -40,7 +41,8 @@ sub base :Chained('/') :PathPart('device') :CaptureArgs(0) {
|
|
|
|
|
{ name => 'model', search => 1, title => $c->loc('Model') },
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
my $devfw_rs = $c->model('DB')->resultset('autoprov_firmwares')->search({
|
|
|
|
|
my $devfw_rs = $c->model('DB')->resultset('autoprov_firmwares');
|
|
|
|
|
$reseller_id and $devfw_rs = $devfw_rs->search({
|
|
|
|
|
'device.reseller_id' => $reseller_id,
|
|
|
|
|
},{
|
|
|
|
|
join => 'device',
|
|
|
|
|
@ -54,7 +56,8 @@ sub base :Chained('/') :PathPart('device') :CaptureArgs(0) {
|
|
|
|
|
{ name => 'version', search => 1, title => $c->loc('Version') },
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
my $devconf_rs = $c->model('DB')->resultset('autoprov_configs')->search({
|
|
|
|
|
my $devconf_rs = $c->model('DB')->resultset('autoprov_configs');
|
|
|
|
|
$reseller_id and $devconf_rs = $devconf_rs->search({
|
|
|
|
|
'device.reseller_id' => $reseller_id,
|
|
|
|
|
}, {
|
|
|
|
|
join => 'device',
|
|
|
|
|
@ -67,7 +70,8 @@ sub base :Chained('/') :PathPart('device') :CaptureArgs(0) {
|
|
|
|
|
{ name => 'version', search => 1, title => $c->loc('Version') },
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
my $devprof_rs = $c->model('DB')->resultset('autoprov_profiles')->search({
|
|
|
|
|
my $devprof_rs = $c->model('DB')->resultset('autoprov_profiles');
|
|
|
|
|
$reseller_id and $devprof_rs = $devprof_rs->search({
|
|
|
|
|
'device.reseller_id' => $reseller_id,
|
|
|
|
|
}, {
|
|
|
|
|
join => { 'config' => 'device' },
|
|
|
|
|
@ -82,7 +86,8 @@ sub base :Chained('/') :PathPart('device') :CaptureArgs(0) {
|
|
|
|
|
{ name => 'config.version', search => 1, title => $c->loc('Configuration Version') },
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
my $fielddev_rs = $c->model('DB')->resultset('autoprov_field_devices')->search({
|
|
|
|
|
my $fielddev_rs = $c->model('DB')->resultset('autoprov_field_devices');
|
|
|
|
|
$reseller_id and $fielddev_rs = $fielddev_rs->search({
|
|
|
|
|
'device.reseller_id' => $reseller_id,
|
|
|
|
|
},{
|
|
|
|
|
join => { 'profile' => { 'config' => 'device' } },
|
|
|
|
|
@ -172,9 +177,10 @@ sub devmod_create :Chained('base') :PathPart('model/create') :Args(0) :Does(ACL)
|
|
|
|
|
$form->params->{mac_image_type} = $ft->mime_type($form->params->{mac_image});
|
|
|
|
|
}
|
|
|
|
|
my $linerange = delete $form->params->{linerange};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
my $sync_parameters = $c->forward('devmod_sync_parameters_prefetch',[$schema,undef,$form->params] );
|
|
|
|
|
my $devmod = $schema->resultset('autoprov_devices')->create($form->params);
|
|
|
|
|
$c->forward('devmod_sync_parameters',[$schema,$devmod,$form->params] );
|
|
|
|
|
$c->forward('devmod_sync_parameters_store',[$schema,$devmod,$sync_parameters] );
|
|
|
|
|
|
|
|
|
|
foreach my $range(@{ $linerange }) {
|
|
|
|
|
delete $range->{id};
|
|
|
|
|
@ -185,6 +191,7 @@ sub devmod_create :Chained('base') :PathPart('model/create') :Args(0) :Does(ACL)
|
|
|
|
|
foreach my $label(@{ $keys }) {
|
|
|
|
|
$label->{line_index} = $i++;
|
|
|
|
|
$label->{position} = delete $label->{labelpos};
|
|
|
|
|
delete $label->{id};
|
|
|
|
|
$r->annotations->create($label);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -275,9 +282,9 @@ sub devmod_edit :Chained('devmod_base') :PathPart('edit') :Args(0) :Does(ACL) :A
|
|
|
|
|
push @{ $params->{linerange} }, $r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ( @{ $c->model('DB')->resultset('autoprov_sync_parameters')->search_rs({
|
|
|
|
|
foreach ( $c->model('DB')->resultset('autoprov_sync_parameters')->search_rs({
|
|
|
|
|
'me.bootstrap_method' => $c->stash->{devmod}->bootstrap_method,
|
|
|
|
|
})->all} ){
|
|
|
|
|
})->all ){
|
|
|
|
|
$params->{'bootstrap_config_'.$c->stash->{devmod}->bootstrap_method.'_'.$_->parameter_name} = $_->parameter_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -336,14 +343,17 @@ sub devmod_edit :Chained('devmod_base') :PathPart('edit') :Args(0) :Does(ACL) :A
|
|
|
|
|
delete $form->params->{mac_image};
|
|
|
|
|
delete $form->params->{mac_image_type};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
my $linerange = delete $form->params->{'linerange'};
|
|
|
|
|
my $sync_parameters = $c->forward('devmod_sync_parameters_prefetch',[$schema,$c->stash->{devmod},$form->params] );
|
|
|
|
|
|
|
|
|
|
$c->stash->{devmod}->update($form->params);
|
|
|
|
|
|
|
|
|
|
$schema->resultset('autoprov_sync')->search_rs({
|
|
|
|
|
device_id => $c->stash->{devmod}->id,
|
|
|
|
|
})->delete;
|
|
|
|
|
#$c->forward('devmod_sync_parameters',[$schema, $c->stash->{devmod}, $form->params]);
|
|
|
|
|
$c->forward('devmod_sync_parameters_store',[$schema,$c->stash->{devmod},$sync_parameters] );
|
|
|
|
|
|
|
|
|
|
my $linerange = delete $form->params->{'linerange'};
|
|
|
|
|
my @existing_range = ();
|
|
|
|
|
my $range_rs = $c->stash->{devmod}->autoprov_device_line_ranges;
|
|
|
|
|
foreach my $range(@{ $linerange }) {
|
|
|
|
|
@ -422,23 +432,37 @@ sub devmod_edit :Chained('devmod_base') :PathPart('edit') :Args(0) :Does(ACL) :A
|
|
|
|
|
form => $form,
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub devmod_sync_parameters :Private {
|
|
|
|
|
sub devmod_sync_parameters_prefetch :Private {
|
|
|
|
|
my($self,$c,$schema,$devmod,$params) = @_;
|
|
|
|
|
#$schema ||= $c->model('DB');
|
|
|
|
|
my $bootstrap_method = $params->{'bootstrap_method'};
|
|
|
|
|
my $bootstrap_params_rs = $schema->resultset('autoprov_sync_parameters')->search_rs({
|
|
|
|
|
'me.bootstrap_method' => $bootstrap_method,
|
|
|
|
|
});
|
|
|
|
|
foreach (@$bootstrap_params_rs->all){
|
|
|
|
|
my @parameters = ();
|
|
|
|
|
foreach ($bootstrap_params_rs->all){
|
|
|
|
|
my $sync_parameter = {
|
|
|
|
|
device_id => $devmod->id,
|
|
|
|
|
device_id => $devmod ? $devmod->id : undef,
|
|
|
|
|
parameter_id => $_->id,
|
|
|
|
|
parameter_value => $params->{'bootstrap_config_'.$bootstrap_method.'_'.$_->parameter_name},
|
|
|
|
|
parameter_value => delete $params->{'bootstrap_config_'.$bootstrap_method.'_'.$_->parameter_name},
|
|
|
|
|
};
|
|
|
|
|
push @parameters,$sync_parameter;
|
|
|
|
|
}
|
|
|
|
|
foreach (keys %$params){
|
|
|
|
|
if($_ =~/^bootstrap_config_/i){
|
|
|
|
|
delete $params->{$_};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return \@parameters;
|
|
|
|
|
}
|
|
|
|
|
sub devmod_sync_parameters_store :Private {
|
|
|
|
|
my($self,$c,$schema,$devmod,$sync_parameters) = @_;
|
|
|
|
|
foreach my $sync_parameter (@$sync_parameters){
|
|
|
|
|
$sync_parameter->{device_id} ||= $devmod ? $devmod->id : undef
|
|
|
|
|
$schema->resultset('autoprov_sync')->create($sync_parameter);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub devmod_download_frontimage_by_profile :Chained('devprof_base') :PathPart('frontimage') :Args(0) {
|
|
|
|
|
my ($self, $c) = @_;
|
|
|
|
|
|
|
|
|
|
|