Add front and mac image for devices.

agranig/peering-route
Andreas Granig 12 years ago
parent 231dc9fd07
commit 015f04bdc1

@ -113,6 +113,10 @@ sub devmod_create :Chained('base') :PathPart('model/create') :Args(0) {
my $params = {};
$params = $params->merge($c->session->{created_objects});
if($posted) {
$c->req->params->{front_image} = $c->req->upload('front_image');
$c->req->params->{mac_image} = $c->req->upload('mac_image');
}
$form->process(
posted => $posted,
params => $c->request->params,
@ -138,6 +142,18 @@ sub devmod_create :Chained('base') :PathPart('model/create') :Args(0) {
}
delete $form->params->{reseller};
my $ft = File::Type->new();
if($form->params->{front_image}) {
my $front_image = delete $form->params->{front_image};
$form->params->{front_image} = $front_image->slurp;
$form->params->{front_image_type} = $ft->mime_type($form->params->{front_image});
}
if($form->params->{mac_image}) {
my $mac_image = delete $form->params->{mac_image};
$form->params->{mac_image} = $mac_image->slurp;
$form->params->{mac_image_type} = $ft->mime_type($form->params->{mac_image});
}
my $devmod = $schema->resultset('autoprov_devices')->create($form->params);
delete $c->session->{created_objects}->{reseller};
$c->session->{created_objects}->{device} = { id => $devmod->id };
@ -212,6 +228,10 @@ sub devmod_edit :Chained('devmod_base') :PathPart('edit') :Args(0) {
} else {
$form = NGCP::Panel::Form::Device::Model->new;
}
if($posted) {
$c->req->params->{front_image} = $c->req->upload('front_image');
$c->req->params->{mac_image} = $c->req->upload('mac_image');
}
$form->process(
posted => $posted,
@ -238,6 +258,24 @@ sub devmod_edit :Chained('devmod_base') :PathPart('edit') :Args(0) {
}
delete $form->params->{reseller};
if($form->params->{front_image}) {
my $front_image = delete $form->params->{front_image};
$form->params->{front_image} = $front_image->slurp;
$form->params->{front_image_type} = $front_image->type;
} else {
delete $form->params->{front_image};
delete $form->params->{front_image_type};
}
if($form->params->{mac_image}) {
my $mac_image = delete $form->params->{mac_image};
$form->params->{mac_image} = $mac_image->slurp;
$form->params->{mac_image_type} = $mac_image->type;
} else {
delete $form->params->{mac_image};
delete $form->params->{mac_image_type};
}
$c->stash->{devmod}->update($form->params);
delete $c->session->{created_objects}->{reseller};
$c->flash(messages => [{type => 'success', text => 'Successfully updated device model'}]);
@ -258,6 +296,32 @@ sub devmod_edit :Chained('devmod_base') :PathPart('edit') :Args(0) {
);
}
sub devmod_download_frontimage :Chained('devmod_base') :PathPart('frontimage') :Args(0) {
my ($self, $c) = @_;
my $devmod = $c->stash->{devmod};
unless($devmod->front_image) {
$c->response->body("404 - No front image available for this device model");
$c->response->status(404);
return;
}
$c->response->content_type($devmod->front_image_type);
$c->response->body($devmod->front_image);
}
sub devmod_download_macimage :Chained('devmod_base') :PathPart('macimage') :Args(0) {
my ($self, $c) = @_;
my $devmod = $c->stash->{devmod};
unless($devmod->mac_image) {
$c->response->body("404 - No mac image available for this device model");
$c->response->status(404);
return;
}
$c->response->content_type($devmod->mac_image_type);
$c->response->body($devmod->mac_image);
}
sub devfw_ajax :Chained('base') :PathPart('firmware/ajax') :Args(0) {
my ($self, $c) = @_;

@ -7,6 +7,7 @@ use Moose::Util::TypeConstraints;
use HTML::FormHandler::Widget::Block::Bootstrap;
has '+widget_wrapper' => ( default => 'Bootstrap' );
has '+enctype' => ( default => 'multipart/form-data');
has_field 'submitid' => ( type => 'Hidden' );
sub build_render_list {[qw/submitid fields actions/]}
sub build_form_element_class {[qw(form-horizontal)]}
@ -23,6 +24,20 @@ has_field 'model' => (
label => 'Model',
);
has_field 'front_image' => (
type => 'Upload',
required => 0,
label => 'Front Image',
max_size => '67108864', # 64MB
);
has_field 'mac_image' => (
type => 'Upload',
required => 0,
label => 'MAC Address Image',
max_size => '67108864', # 64MB
);
has_field 'save' => (
type => 'Submit',
value => 'Save',
@ -33,7 +48,7 @@ has_field 'save' => (
has_block 'fields' => (
tag => 'div',
class => [qw/modal-body/],
render_list => [qw/vendor model/],
render_list => [qw/vendor model front_image mac_image/],
);
has_block 'actions' => (

@ -32,7 +32,7 @@ has_field 'save' => (
has_block 'fields' => (
tag => 'div',
class => [qw/modal-body/],
render_list => [qw/reseller vendor model/],
render_list => [qw/reseller vendor model front_image mac_image/],
);
has_block 'actions' => (

Loading…
Cancel
Save