implement Inventory page feature
This commit is contained in:
@@ -10,6 +10,7 @@ use HTML::Entities (); # to ensure dependency is met
|
||||
use Netdisco::Web::AuthN;
|
||||
use Netdisco::Web::Search;
|
||||
use Netdisco::Web::Device;
|
||||
use Netdisco::Web::Inventory;
|
||||
|
||||
hook 'before_template' => sub {
|
||||
my $tokens = shift;
|
||||
|
||||
@@ -33,7 +33,7 @@ post '/login' => sub {
|
||||
}
|
||||
}
|
||||
}
|
||||
redirect '/?failed=1';
|
||||
redirect uri_for('/', {failed => 1});
|
||||
};
|
||||
|
||||
get '/logout' => sub {
|
||||
|
||||
23
Netdisco/lib/Netdisco/Web/Inventory.pm
Normal file
23
Netdisco/lib/Netdisco/Web/Inventory.pm
Normal file
@@ -0,0 +1,23 @@
|
||||
package Netdisco::Web::Inventory;
|
||||
|
||||
use Dancer ':syntax';
|
||||
use Dancer::Plugin::DBIC;
|
||||
|
||||
get '/inventory' => sub {
|
||||
template 'inventory', {
|
||||
models => scalar schema('netdisco')->resultset('Device')->search({},{
|
||||
select => [ 'vendor', 'model', { count => 'ip' } ],
|
||||
as => [qw/vendor model count/],
|
||||
group_by => [qw/vendor model/],
|
||||
order_by => [{-asc => 'vendor'}, {-desc => 'count'}, {-asc => 'model'}],
|
||||
}),
|
||||
releases => scalar schema('netdisco')->resultset('Device')->search({},{
|
||||
select => [ 'os', 'os_ver', { count => 'ip' } ],
|
||||
as => [qw/os os_ver count/],
|
||||
group_by => [qw/os os_ver/],
|
||||
order_by => [{-asc => 'os'}, {-desc => 'count'}, {-asc => 'os_ver'}],
|
||||
}),
|
||||
};
|
||||
};
|
||||
|
||||
true;
|
||||
@@ -185,10 +185,12 @@ get '/search' => sub {
|
||||
schema('netdisco')->resultset('Device')->get_distinct('vendor')
|
||||
]);
|
||||
|
||||
params->{'q'} ||= '_'; # FIXME a cheat Inventory, for now
|
||||
|
||||
my $q = param('q');
|
||||
if ($q and not param('tab')) {
|
||||
if (not param('tab')) {
|
||||
if (not $q) {
|
||||
redirect uri_for('/');
|
||||
}
|
||||
|
||||
# pick most likely tab for initial results
|
||||
if ($q =~ m/^\d+$/) {
|
||||
params->{'tab'} = 'vlan';
|
||||
|
||||
Reference in New Issue
Block a user