use simple find for device ip or name

This commit is contained in:
Oliver Gorwits
2013-02-13 16:23:02 +00:00
parent 5f339c6ec6
commit 6efe52b3ae
2 changed files with 11 additions and 10 deletions

View File

@@ -87,20 +87,21 @@ hook 'before_template' => sub {
};
get '/device' => sub {
my $ip = NetAddr::IP::Lite->new(param('q'));
if (! $ip) {
redirect uri_for('/', {nosuchdevice => 1});
return;
}
my $q = param('q');
my $dev = schema('netdisco')->resultset('Device')->single({
-or => [
ip => $q,
dns => $q,
],
});
my $device = schema('netdisco')->resultset('Device')->find($ip->addr);
if (! $device) {
if (! $dev) {
redirect uri_for('/', {nosuchdevice => 1});
return;
}
params->{'tab'} ||= 'details';
template 'device', { d => $device };
template 'device', { d => $dev };
};
true;

View File

@@ -66,7 +66,7 @@ get '/search' => sub {
my $s = schema('netdisco');
if (not param('tab')) {
if (not $q) { redirect uri_for('/') }
if (not $q) { return redirect uri_for('/') }
# pick most likely tab for initial results
if ($q =~ m/^\d+$/) {
@@ -78,7 +78,7 @@ get '/search' => sub {
if ($nd and $nd->count) {
if ($nd->count == 1) {
# redirect to device details for the one device
redirect uri_for('/device',
return redirect uri_for('/device',
{tab => 'details', q => $q, f => ''});
}