on call to /device, check for duplicates by dns
This commit is contained in:
		@@ -154,20 +154,29 @@ hook 'before_template' => sub {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
get '/device' => require_login sub {
 | 
					get '/device' => require_login sub {
 | 
				
			||||||
    my $q = param('q');
 | 
					    my $q = param('q');
 | 
				
			||||||
    my $dev = schema('netdisco')->resultset('Device')->single({
 | 
					    my $schema = schema('netdisco')->resultset('Device');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # we are passed either dns or ip
 | 
				
			||||||
 | 
					    my $dev = $schema->search({
 | 
				
			||||||
        -or => [
 | 
					        -or => [
 | 
				
			||||||
            \[ 'host(me.ip) = ?' => [ bind_value => $q ] ],
 | 
					            \[ 'host(me.ip) = ?' => [ bind_value => $q ] ],
 | 
				
			||||||
            'me.dns' => $q,
 | 
					            'me.dns' => $q,
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!defined $dev) {
 | 
					    if ($dev->count == 0) {
 | 
				
			||||||
        return redirect uri_for('/', {nosuchdevice => 1})->path_query;
 | 
					        return redirect uri_for('/', {nosuchdevice => 1})->path_query;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # if passed dns, need to check for duplicates
 | 
				
			||||||
 | 
					    # and use only ip for q param, if there are duplicates.
 | 
				
			||||||
 | 
					    my $first = $dev->first;
 | 
				
			||||||
 | 
					    my $others = ($schema->search({dns => $first->dns})->count() - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    params->{'tab'} ||= 'details';
 | 
					    params->{'tab'} ||= 'details';
 | 
				
			||||||
    template 'device', {
 | 
					    template 'device', {
 | 
				
			||||||
      d => $dev,
 | 
					      d => $dev,
 | 
				
			||||||
 | 
					      display_name => ($others ? $first->ip : $first->dns),
 | 
				
			||||||
      device => params->{'tab'},
 | 
					      device => params->{'tab'},
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,7 +81,7 @@ get '/search' => require_login sub {
 | 
				
			|||||||
                    # redirect to device details for the one device
 | 
					                    # redirect to device details for the one device
 | 
				
			||||||
                    return redirect uri_for('/device', {
 | 
					                    return redirect uri_for('/device', {
 | 
				
			||||||
                      tab => 'details',
 | 
					                      tab => 'details',
 | 
				
			||||||
                      q => ($nd->first->dns || $nd->first->ip),
 | 
					                      q => $nd->first->ip,
 | 
				
			||||||
                      f => '',
 | 
					                      f => '',
 | 
				
			||||||
                    })->path_query;
 | 
					                    })->path_query;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -116,7 +116,7 @@
 | 
				
			|||||||
      </ul>
 | 
					      </ul>
 | 
				
			||||||
      <form class="navbar-search pull-left" method="get" action="[% uri_for('/search') %]">
 | 
					      <form class="navbar-search pull-left" method="get" action="[% uri_for('/search') %]">
 | 
				
			||||||
        <input placeholder="Find Anything" class="search-query span3"
 | 
					        <input placeholder="Find Anything" class="search-query span3"
 | 
				
			||||||
          id="nq" name="q" type="text" autocomplete="off"/>
 | 
					          id="nq" name="q" value="[% display_name %]" type="text" autocomplete="off"/>
 | 
				
			||||||
        <div class="btn-group nd_navbar-search-group">
 | 
					        <div class="btn-group nd_navbar-search-group">
 | 
				
			||||||
          <button class="btn btn-inverse nd_navbar-search-icon">
 | 
					          <button class="btn btn-inverse nd_navbar-search-icon">
 | 
				
			||||||
            <span style="font-size: 18px;">
 | 
					            <span style="font-size: 18px;">
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user