implement Inventory page feature

This commit is contained in:
Oliver Gorwits
2012-03-09 22:09:04 +00:00
parent c334df9667
commit 0067ed9b47
12 changed files with 167 additions and 21 deletions

View File

@@ -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;

View File

@@ -33,7 +33,7 @@ post '/login' => sub {
}
}
}
redirect '/?failed=1';
redirect uri_for('/', {failed => 1});
};
get '/logout' => sub {

View 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;

View File

@@ -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';