MT#9177 Device model web form tested can be created and changed

changes/93/493/1
Irina Peshinskaya 11 years ago
parent bddadea51b
commit c518e74530

@ -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) = @_;

Loading…
Cancel
Save